diff --git a/.gitignore b/.gitignore index 0b7b69bd8ba18f12769262bbd615bf207224f74a..8b911b3870c00a084143a42060a545f126d1b499 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ # Example code in package build process *-Ex.R +# IPYNB +*.ipynb + # Output files from R CMD build /*.tar.gz diff --git a/01-introduction.qmd b/01-introduction.qmd index 627c16e39356900b0e3b00f62d60d3dc7d725543..4eec7b2cae84ab7fd2c7829ad193e4947995f68b 100644 --- a/01-introduction.qmd +++ b/01-introduction.qmd @@ -29,7 +29,6 @@ The packages `stars` [@stars] and `terra` [@terra] come to replace the package ` ::: {.callout-note appearance="minimal" icon="false"} Website of package `sf` : - [Simple Features for R](https://r-spatial.github.io/sf/) ::: @@ -41,7 +40,6 @@ Objects`sf` are objects in `data.frame` which one of the columns contains geomet ::: {.callout-note appearance="minimal" icon="false"} Thumbnail describing the simple feature format: - [Simple Features for R](https://r-spatial.github.io/sf/articles/sf1.html) ::: @@ -80,7 +78,6 @@ To use this package several sources can be consulted: ::: {.callout-note appearance="minimal" icon="false"} Website of package `terra` : - [Spatial Data Science with R and "terra"](https://rspatial.org/terra/) ::: diff --git a/02-data_acquisition.qmd b/02-data_acquisition.qmd new file mode 100644 index 0000000000000000000000000000000000000000..965dfc287aa86657e24789cde101015cb2a165b0 --- /dev/null +++ b/02-data_acquisition.qmd @@ -0,0 +1,114 @@ +--- +bibliography: references.bib +--- +# Data Acquisition + +## Import from lat / long file + +The function `st_as_sf()` makes it possible to transform a `data.frame` container of geographic coordinates into an object `sf`. Here we use the `data.frame` `places2` created in the previous point. + +```{r build_sf, eval = TRUE, echo = TRUE, nm = TRUE, fig.width=8, class.output="code-out", warning=FALSE, message=FALSE} +library(sf) +place_sf <- st_as_sf(read.csv("data_cambodia/adress.csv"), coords = c("long", "lat"), crs = 4326) +place_sf +``` + +To crate a `sf` POINT type object with only one pair of coordinate (WGS84, longitude=0.5, latitude = 45.5) : + +```{r build_sf2, eval = TRUE, echo = TRUE, nm = TRUE, fig.width=8, class.output="code-out", warning=FALSE, message=FALSE} +library(sf) +test_point <- st_as_sf(data.frame(x = 0.5, y = 45.5), coords = c("x", "y"), crs = 4326) +test_point +``` + +We can display this object `sf` on an [OpenStreetMap](https://www.openstreetmap.org/) basesmap with the package maptiles `maptiles` [@maptiles]. + +```{r display_sf, eval = TRUE, echo = TRUE, nm = TRUE, out.width="788px", warning=FALSE, message=FALSE} +library(maptiles) +osm <- get_tiles(x = place_sf, zoom = 12) +plot_tiles(osm) +plot(st_geometry(place_sf), pch = 2, cex = 2, col = "red", add = TRUE) +``` + +## Online databases + +## OpenStreetMap + +::: {style="float: right"} +<img src="img/Openstreetmap_logo.svg" width="150px" padding="1em"/> +::: + +[OpenStreetMap (OSM)](https://www.openstreetmap.org){target="_blank"} is a participatory mapping project that aim s to buil a free geographic database on a global scale. OpenStreetMap lets you view, edit and use geographic data around the world. + +**Terms of use** + +> OpenStreetMap is open data : you are free to use it for ant purpose as long as you credit OpenStreetMap and its contributers. If you modify or rely data in any way, you may distribute the result only under the same license. (...) + +**Contributors** + +> (...) Our contributors incloude enthusiastic mapmakers, GIS professional, engineers running OSM servers, humanitarians mapping disaster-stricken areas and many mmore.(...) + +### Display and interactive map + +The two main packages that allow to display as interactive map based on OSM are `leaflet` [@leaflet] and `mapview` [@mapview]. + +#### `leaflet` + +<img src="img/logo_leaflet.png" align="right" width="200"/> `leaflet` uses the javascript library Leaflet [@JS-Leaflet] to create interactive maps. + +```{r leaflet, eval=TRUE, cache = FALSE, class.output="code-out", warning=FALSE, message=FALSE} +library(sf) +library(leaflet) + +district <- st_read("data_cambodia/cambodia.gpkg", layer = "district", quiet = TRUE) +hospital <- st_read("data_cambodia/cambodia.gpkg", layer = "hospital", quiet = TRUE) + + +banan <- district[district$ADM2_PCODE == "KH0201", ] #Select one district (Banan district: KH0201) +health_banan <- hospital[hospital$DCODE == "201", ] #Select Health centers in Banan + +banan <- st_transform(banan, 4326) #Transform coordinate system to WGS84 +health_banan <- st_transform(health_banan, 4326) + +banan_map <- leaflet(banan) %>% #Create interactive map + addTiles() %>% + addPolygons() %>% + addMarkers(data = health_banan) +banan_map +``` + +::: {.callout-note appearance="minimal" icon="false"} +Website of `leaflet` +[Leaflet for R](https://rstudio.github.io/leaflet/) +::: + +#### `mapview` + +<img src="img/logo_mapview.gif" align="right" width="150"/> `mapview` relies on `leaflet` to create interactive maps, its use is easier and its documentation is a bit dense. + +```{r mapview, cache=FALSE, class.output="code-out", warning=FALSE, message=FALSE} +library(mapview) +mapview(banan) + mapview(health_banan) +``` + +::: {.callout-note appearance="minimal" icon="false"} +Website of `mapview` +[`mapview`](https://r-spatial.github.io/mapview/) +::: + +### Import basemaps + +The package `maptiles` [@maptiles] allows downlaoding and displaying raster basemaps.\ +The function `get_tiles()` allow you to download OSM background maps and the function `plot_tiles()` allows to display them.\ +Renders are better if the input data used the same coordinate system as the tiles ([EPSG:3857](https://github.com/riatelab/maptiles#projection)). + +```{r display_point, fig.width=6, fig.height=6, eval=TRUE, class.output="code-out", warning=FALSE, message=FALSE} +library(sf) +library(maptiles) +district <- st_read("data_cambodia/cambodia.gpkg", layer = "district", quiet = TRUE) +district <- st_transform(district, 3857) +osm_tiles <- get_tiles(x = district, zoom = 10, crop = TRUE) +plot_tiles(osm_tiles) +plot(st_geometry(district), border = "grey20", lwd = .7, add = TRUE) +mtext(side = 1, line = -2, text = get_credit("OpenStreetMap"), col="tomato") +``` \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml index 5bd9928f7b64d93e0a531df61875d166cf7c6a1b..53346cba9367565f3a08de025c3e5af0e7c7977a 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -13,6 +13,7 @@ book: chapters: - index.qmd - 01-introduction.qmd + - 02-data_acquisition.qmd - references.qmd bibliography: references.bib diff --git a/data_cambodia/PP.gpkg b/data_cambodia/PP.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..cdfa9675c35c3cc72a6be13af746910942622241 Binary files /dev/null and b/data_cambodia/PP.gpkg differ diff --git a/data_cambodia/Sentinel2A.tif b/data_cambodia/Sentinel2A.tif new file mode 100644 index 0000000000000000000000000000000000000000..9beeabc4cbb6e124035300dfd1cb4beb2b5452d9 Binary files /dev/null and b/data_cambodia/Sentinel2A.tif differ diff --git a/data_cambodia/adress.csv b/data_cambodia/adress.csv new file mode 100644 index 0000000000000000000000000000000000000000..7ab7115a71ebede6c0d52dfaffd3827a1bd2ee1b --- /dev/null +++ b/data_cambodia/adress.csv @@ -0,0 +1,3 @@ +"address","lat","long" +"Phnom Penh International Airport, Phnom Penh, Cambodia",11.5534919,104.8442885 +"Khmer Soviet Friendship Hospital, Phnom Penh, Cambodia",11.5436555,104.9047381 diff --git a/data_cambodia/cambodia.gpkg b/data_cambodia/cambodia.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..cd6057fc2d18ef8be40700ffaaf6e3c3a86002da Binary files /dev/null and b/data_cambodia/cambodia.gpkg differ diff --git a/data_cambodia/district.cpg b/data_cambodia/district.cpg new file mode 100644 index 0000000000000000000000000000000000000000..3ad133c048f2189041151425a73485649e6c32c0 --- /dev/null +++ b/data_cambodia/district.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/data_cambodia/district.dbf b/data_cambodia/district.dbf new file mode 100644 index 0000000000000000000000000000000000000000..d788d54065ae66b30f49a6de710b2d7ecdbda2a3 Binary files /dev/null and b/data_cambodia/district.dbf differ diff --git a/data_cambodia/district.gpkg b/data_cambodia/district.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..ff904f517fd2feeadeefb384553361ec20023184 Binary files /dev/null and b/data_cambodia/district.gpkg differ diff --git a/data_cambodia/district.prj b/data_cambodia/district.prj new file mode 100644 index 0000000000000000000000000000000000000000..8755666e5a10ca456f6e3837c0eeaa6f149c84a7 --- /dev/null +++ b/data_cambodia/district.prj @@ -0,0 +1 @@ +PROJCS["WGS_1984_UTM_Zone_48N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] \ No newline at end of file diff --git a/data_cambodia/district.shp b/data_cambodia/district.shp new file mode 100644 index 0000000000000000000000000000000000000000..57fb2d6bc3e6ac7bf4ad9d16addbe3e74d0ee75e Binary files /dev/null and b/data_cambodia/district.shp differ diff --git a/data_cambodia/district.shx b/data_cambodia/district.shx new file mode 100644 index 0000000000000000000000000000000000000000..f2bde55f4c8f88967a8f88f1d5e69a58c05407a5 Binary files /dev/null and b/data_cambodia/district.shx differ diff --git a/data_cambodia/elevation.tif b/data_cambodia/elevation.tif new file mode 100644 index 0000000000000000000000000000000000000000..b28eee8e96c49362cb2aa8fcfdf998cbe1084680 Binary files /dev/null and b/data_cambodia/elevation.tif differ diff --git a/data_cambodia/elevation_clip.tif b/data_cambodia/elevation_clip.tif new file mode 100644 index 0000000000000000000000000000000000000000..d3fb14da32e04f0872a9b24af82203f6cbdff85e Binary files /dev/null and b/data_cambodia/elevation_clip.tif differ diff --git a/data_cambodia/geofabrik_cambodia-latest.gpkg b/data_cambodia/geofabrik_cambodia-latest.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..414c6301924b801c48839759bbaa4eca97498507 Binary files /dev/null and b/data_cambodia/geofabrik_cambodia-latest.gpkg differ diff --git a/data_cambodia/geofabrik_cambodia-latest.osm.pbf b/data_cambodia/geofabrik_cambodia-latest.osm.pbf new file mode 100644 index 0000000000000000000000000000000000000000..9482852b6b53672fa9bc5826dd628990148c23ae Binary files /dev/null and b/data_cambodia/geofabrik_cambodia-latest.osm.pbf differ diff --git a/data_cambodia/khm_pd_2019_1km_utm.tif b/data_cambodia/khm_pd_2019_1km_utm.tif new file mode 100644 index 0000000000000000000000000000000000000000..8c6efa556918d5069640c897570979197af2aaab Binary files /dev/null and b/data_cambodia/khm_pd_2019_1km_utm.tif differ diff --git a/data_cambodia/lulc_2019.tif b/data_cambodia/lulc_2019.tif new file mode 100644 index 0000000000000000000000000000000000000000..cd9ffd94d41cc93aa224234c648f10c28546d3f2 Binary files /dev/null and b/data_cambodia/lulc_2019.tif differ diff --git a/data_cambodia/pp_pop_dens.csv b/data_cambodia/pp_pop_dens.csv new file mode 100644 index 0000000000000000000000000000000000000000..7f2dca03da83ff5fe96933b9327f7b15aa99f18e --- /dev/null +++ b/data_cambodia/pp_pop_dens.csv @@ -0,0 +1,1296 @@ +X,Y,DENs +469177.5074,1263089.554,NA +470177.5074,1263089.554,NA +471177.5074,1263089.554,NA +472177.5074,1263089.554,NA +473177.5074,1263089.554,NA +474177.5074,1263089.554,NA +475177.5074,1263089.554,NA +476177.5074,1263089.554,NA +477177.5074,1263089.554,NA +478177.5074,1263089.554,NA +479177.5074,1263089.554,0.014674913 +480177.5074,1263089.554,NA +481177.5074,1263089.554,NA +482177.5074,1263089.554,NA +483177.5074,1263089.554,0.058901772 +484177.5074,1263089.554,2.850146501 +485177.5074,1263089.554,4.050527533 +486177.5074,1263089.554,4.679135381 +487177.5074,1263089.554,NA +488177.5074,1263089.554,0.000777317 +489177.5074,1263089.554,NA +490177.5074,1263089.554,NA +491177.5074,1263089.554,0.724017192 +492177.5074,1263089.554,NA +493177.5074,1263089.554,NA +494177.5074,1263089.554,NA +495177.5074,1263089.554,NA +496177.5074,1263089.554,NA +497177.5074,1263089.554,NA +498177.5074,1263089.554,NA +499177.5074,1263089.554,NA +500177.5074,1263089.554,NA +501177.5074,1263089.554,NA +502177.5074,1263089.554,NA +503177.5074,1263089.554,NA +504177.5074,1263089.554,NA +505177.5074,1263089.554,NA +469177.5074,1264089.554,NA +470177.5074,1264089.554,NA +471177.5074,1264089.554,NA +472177.5074,1264089.554,NA +473177.5074,1264089.554,NA +474177.5074,1264089.554,NA +475177.5074,1264089.554,NA +476177.5074,1264089.554,NA +477177.5074,1264089.554,NA +478177.5074,1264089.554,2.288293028 +479177.5074,1264089.554,7.095710531 +480177.5074,1264089.554,3.226421631 +481177.5074,1264089.554,2.723540383 +482177.5074,1264089.554,7.061913768 +483177.5074,1264089.554,7.374850788 +484177.5074,1264089.554,7.385245387 +485177.5074,1264089.554,7.385245387 +486177.5074,1264089.554,7.383470057 +487177.5074,1264089.554,4.305998125 +488177.5074,1264089.554,5.792778207 +489177.5074,1264089.554,3.46312769 +490177.5074,1264089.554,4.784666655 +491177.5074,1264089.554,6.376435427 +492177.5074,1264089.554,NA +493177.5074,1264089.554,NA +494177.5074,1264089.554,NA +495177.5074,1264089.554,NA +496177.5074,1264089.554,NA +497177.5074,1264089.554,NA +498177.5074,1264089.554,NA +499177.5074,1264089.554,NA +500177.5074,1264089.554,NA +501177.5074,1264089.554,NA +502177.5074,1264089.554,NA +503177.5074,1264089.554,NA +504177.5074,1264089.554,NA +505177.5074,1264089.554,NA +469177.5074,1265089.554,NA +470177.5074,1265089.554,NA +471177.5074,1265089.554,NA +472177.5074,1265089.554,NA +473177.5074,1265089.554,NA +474177.5074,1265089.554,NA +475177.5074,1265089.554,NA +476177.5074,1265089.554,0.249074335 +477177.5074,1265089.554,2.146323049 +478177.5074,1265089.554,6.156065845 +479177.5074,1265089.554,7.385245387 +480177.5074,1265089.554,5.979941928 +481177.5074,1265089.554,6.8129667 +482177.5074,1265089.554,7.385245387 +483177.5074,1265089.554,7.385245387 +484177.5074,1265089.554,7.385245387 +485177.5074,1265089.554,7.385245387 +486177.5074,1265089.554,7.385245387 +487177.5074,1265089.554,7.385245387 +488177.5074,1265089.554,7.385245387 +489177.5074,1265089.554,7.385245387 +490177.5074,1265089.554,7.385245387 +491177.5074,1265089.554,6.643101119 +492177.5074,1265089.554,NA +493177.5074,1265089.554,NA +494177.5074,1265089.554,NA +495177.5074,1265089.554,NA +496177.5074,1265089.554,NA +497177.5074,1265089.554,NA +498177.5074,1265089.554,NA +499177.5074,1265089.554,NA +500177.5074,1265089.554,NA +501177.5074,1265089.554,NA +502177.5074,1265089.554,NA +503177.5074,1265089.554,NA +504177.5074,1265089.554,NA +505177.5074,1265089.554,NA +469177.5074,1266089.554,NA +470177.5074,1266089.554,NA +471177.5074,1266089.554,NA +472177.5074,1266089.554,1.157620894 +473177.5074,1266089.554,2.894197632 +474177.5074,1266089.554,0.076094268 +475177.5074,1266089.554,0.000441021 +476177.5074,1266089.554,2.75802615 +477177.5074,1266089.554,7.385245387 +478177.5074,1266089.554,7.385245387 +479177.5074,1266089.554,7.385245387 +480177.5074,1266089.554,7.385245387 +481177.5074,1266089.554,7.385245387 +482177.5074,1266089.554,7.385245387 +483177.5074,1266089.554,7.385245387 +484177.5074,1266089.554,7.385245387 +485177.5074,1266089.554,7.385245387 +486177.5074,1266089.554,7.385245387 +487177.5074,1266089.554,7.385245387 +488177.5074,1266089.554,7.385245387 +489177.5074,1266089.554,7.385245387 +490177.5074,1266089.554,7.385245387 +491177.5074,1266089.554,5.71612555 +492177.5074,1266089.554,NA +493177.5074,1266089.554,NA +494177.5074,1266089.554,NA +495177.5074,1266089.554,NA +496177.5074,1266089.554,NA +497177.5074,1266089.554,NA +498177.5074,1266089.554,NA +499177.5074,1266089.554,NA +500177.5074,1266089.554,NA +501177.5074,1266089.554,NA +502177.5074,1266089.554,NA +503177.5074,1266089.554,NA +504177.5074,1266089.554,NA +505177.5074,1266089.554,NA +469177.5074,1267089.554,NA +470177.5074,1267089.554,NA +471177.5074,1267089.554,NA +472177.5074,1267089.554,4.696438577 +473177.5074,1267089.554,9.258440857 +474177.5074,1267089.554,7.30025001 +475177.5074,1267089.554,5.699447648 +476177.5074,1267089.554,8.734552449 +477177.5074,1267089.554,7.385245387 +478177.5074,1267089.554,7.385245387 +479177.5074,1267089.554,7.385245387 +480177.5074,1267089.554,7.385245387 +481177.5074,1267089.554,7.385245387 +482177.5074,1267089.554,7.385245387 +483177.5074,1267089.554,7.385245387 +484177.5074,1267089.554,7.385245387 +485177.5074,1267089.554,7.385245387 +486177.5074,1267089.554,7.385245387 +487177.5074,1267089.554,7.385245387 +488177.5074,1267089.554,7.385245387 +489177.5074,1267089.554,7.385245387 +490177.5074,1267089.554,7.385245387 +491177.5074,1267089.554,4.492105041 +492177.5074,1267089.554,NA +493177.5074,1267089.554,NA +494177.5074,1267089.554,NA +495177.5074,1267089.554,NA +496177.5074,1267089.554,2.835461521 +497177.5074,1267089.554,8.058902677 +498177.5074,1267089.554,9.06390257 +499177.5074,1267089.554,4.848554665 +500177.5074,1267089.554,2.194355142 +501177.5074,1267089.554,1.257134953 +502177.5074,1267089.554,1.760157287 +503177.5074,1267089.554,1.138734813 +504177.5074,1267089.554,NA +505177.5074,1267089.554,NA +469177.5074,1268089.554,NA +470177.5074,1268089.554,NA +471177.5074,1268089.554,NA +472177.5074,1268089.554,4.65102507 +473177.5074,1268089.554,9.29155302 +474177.5074,1268089.554,9.29155302 +475177.5074,1268089.554,9.29155302 +476177.5074,1268089.554,9.110892137 +477177.5074,1268089.554,7.385322612 +478177.5074,1268089.554,7.385245387 +479177.5074,1268089.554,7.385245387 +480177.5074,1268089.554,7.385245387 +481177.5074,1268089.554,7.385245387 +482177.5074,1268089.554,7.385245387 +483177.5074,1268089.554,7.385245387 +484177.5074,1268089.554,7.385245387 +485177.5074,1268089.554,7.385245387 +486177.5074,1268089.554,7.385245387 +487177.5074,1268089.554,7.385245387 +488177.5074,1268089.554,7.385245387 +489177.5074,1268089.554,7.385245387 +490177.5074,1268089.554,7.385245387 +491177.5074,1268089.554,3.668573272 +492177.5074,1268089.554,NA +493177.5074,1268089.554,NA +494177.5074,1268089.554,NA +495177.5074,1268089.554,2.412711505 +496177.5074,1268089.554,16.78046333 +497177.5074,1268089.554,17.68264585 +498177.5074,1268089.554,17.68264585 +499177.5074,1268089.554,17.68264585 +500177.5074,1268089.554,17.68264585 +501177.5074,1268089.554,17.68264585 +502177.5074,1268089.554,17.68264585 +503177.5074,1268089.554,12.28499131 +504177.5074,1268089.554,0.242958307 +505177.5074,1268089.554,NA +469177.5074,1269089.554,NA +470177.5074,1269089.554,NA +471177.5074,1269089.554,NA +472177.5074,1269089.554,3.400074892 +473177.5074,1269089.554,9.29155302 +474177.5074,1269089.554,9.29155302 +475177.5074,1269089.554,9.29155302 +476177.5074,1269089.554,9.29155302 +477177.5074,1269089.554,9.040079658 +478177.5074,1269089.554,8.511271311 +479177.5074,1269089.554,8.105787011 +480177.5074,1269089.554,7.51559035 +481177.5074,1269089.554,7.385245387 +482177.5074,1269089.554,7.385245387 +483177.5074,1269089.554,7.385245387 +484177.5074,1269089.554,7.385245387 +485177.5074,1269089.554,7.385245387 +486177.5074,1269089.554,7.385245387 +487177.5074,1269089.554,7.385245387 +488177.5074,1269089.554,7.385245387 +489177.5074,1269089.554,7.385245387 +490177.5074,1269089.554,11.22306324 +491177.5074,1269089.554,21.86904292 +492177.5074,1269089.554,NA +493177.5074,1269089.554,NA +494177.5074,1269089.554,NA +495177.5074,1269089.554,12.63227975 +496177.5074,1269089.554,17.68264585 +497177.5074,1269089.554,17.68264585 +498177.5074,1269089.554,17.68264585 +499177.5074,1269089.554,17.68264585 +500177.5074,1269089.554,17.68264585 +501177.5074,1269089.554,17.68264585 +502177.5074,1269089.554,17.68264585 +503177.5074,1269089.554,16.30144203 +504177.5074,1269089.554,10.54841882 +505177.5074,1269089.554,1.867550957 +469177.5074,1270089.554,NA +470177.5074,1270089.554,NA +471177.5074,1270089.554,NA +472177.5074,1270089.554,0.154709034 +473177.5074,1270089.554,4.723962534 +474177.5074,1270089.554,8.147733639 +475177.5074,1270089.554,9.29155302 +476177.5074,1270089.554,9.29155302 +477177.5074,1270089.554,9.29155302 +478177.5074,1270089.554,9.29155302 +479177.5074,1270089.554,9.29155302 +480177.5074,1270089.554,8.242702349 +481177.5074,1270089.554,7.385245387 +482177.5074,1270089.554,7.385245387 +483177.5074,1270089.554,7.385245387 +484177.5074,1270089.554,7.385245387 +485177.5074,1270089.554,7.385245387 +486177.5074,1270089.554,7.385245387 +487177.5074,1270089.554,7.385245387 +488177.5074,1270089.554,7.385245387 +489177.5074,1270089.554,7.385245387 +490177.5074,1270089.554,28.817059 +491177.5074,1270089.554,164.5540418 +492177.5074,1270089.554,126.2124753 +493177.5074,1270089.554,65.57277197 +494177.5074,1270089.554,14.57204045 +495177.5074,1270089.554,17.68193488 +496177.5074,1270089.554,17.68264585 +497177.5074,1270089.554,17.68264585 +498177.5074,1270089.554,17.68264585 +499177.5074,1270089.554,17.68264585 +500177.5074,1270089.554,17.68264585 +501177.5074,1270089.554,17.68264585 +502177.5074,1270089.554,17.68264585 +503177.5074,1270089.554,8.611230219 +504177.5074,1270089.554,NA +505177.5074,1270089.554,NA +469177.5074,1271089.554,NA +470177.5074,1271089.554,NA +471177.5074,1271089.554,NA +472177.5074,1271089.554,NA +473177.5074,1271089.554,NA +474177.5074,1271089.554,2.804273507 +475177.5074,1271089.554,9.29155302 +476177.5074,1271089.554,9.29155302 +477177.5074,1271089.554,9.29155302 +478177.5074,1271089.554,9.29155302 +479177.5074,1271089.554,9.29155302 +480177.5074,1271089.554,8.688685028 +481177.5074,1271089.554,7.885501562 +482177.5074,1271089.554,7.724203674 +483177.5074,1271089.554,7.385245387 +484177.5074,1271089.554,7.385245387 +485177.5074,1271089.554,7.385245387 +486177.5074,1271089.554,7.385245387 +487177.5074,1271089.554,7.385245387 +488177.5074,1271089.554,7.385245387 +489177.5074,1271089.554,7.385245387 +490177.5074,1271089.554,38.15307387 +491177.5074,1271089.554,165.1327661 +492177.5074,1271089.554,165.1327661 +493177.5074,1271089.554,165.1327661 +494177.5074,1271089.554,58.88453976 +495177.5074,1271089.554,17.68264585 +496177.5074,1271089.554,17.68264585 +497177.5074,1271089.554,17.68264585 +498177.5074,1271089.554,17.68264585 +499177.5074,1271089.554,17.68264585 +500177.5074,1271089.554,17.68264585 +501177.5074,1271089.554,17.68264585 +502177.5074,1271089.554,17.68264585 +503177.5074,1271089.554,7.08192102 +504177.5074,1271089.554,NA +505177.5074,1271089.554,NA +469177.5074,1272089.554,NA +470177.5074,1272089.554,NA +471177.5074,1272089.554,NA +472177.5074,1272089.554,NA +473177.5074,1272089.554,NA +474177.5074,1272089.554,0.003110098 +475177.5074,1272089.554,8.604725568 +476177.5074,1272089.554,9.29155302 +477177.5074,1272089.554,9.29155302 +478177.5074,1272089.554,9.29155302 +479177.5074,1272089.554,9.29155302 +480177.5074,1272089.554,9.29155302 +481177.5074,1272089.554,9.29155302 +482177.5074,1272089.554,9.121576595 +483177.5074,1272089.554,8.59612319 +484177.5074,1272089.554,8.649931192 +485177.5074,1272089.554,8.083459409 +486177.5074,1272089.554,7.47096825 +487177.5074,1272089.554,7.385245387 +488177.5074,1272089.554,7.385245387 +489177.5074,1272089.554,7.385245387 +490177.5074,1272089.554,22.10043113 +491177.5074,1272089.554,165.1327661 +492177.5074,1272089.554,165.1327661 +493177.5074,1272089.554,153.1458962 +494177.5074,1272089.554,19.87088087 +495177.5074,1272089.554,17.68264585 +496177.5074,1272089.554,17.68264585 +497177.5074,1272089.554,17.68264585 +498177.5074,1272089.554,17.68264585 +499177.5074,1272089.554,17.68264585 +500177.5074,1272089.554,17.68264585 +501177.5074,1272089.554,17.68264585 +502177.5074,1272089.554,17.68264585 +503177.5074,1272089.554,5.935751764 +504177.5074,1272089.554,NA +505177.5074,1272089.554,NA +469177.5074,1273089.554,NA +470177.5074,1273089.554,NA +471177.5074,1273089.554,NA +472177.5074,1273089.554,NA +473177.5074,1273089.554,NA +474177.5074,1273089.554,0.180654983 +475177.5074,1273089.554,8.908721693 +476177.5074,1273089.554,9.29155302 +477177.5074,1273089.554,9.29155302 +478177.5074,1273089.554,9.29155302 +479177.5074,1273089.554,9.29155302 +480177.5074,1273089.554,9.29155302 +481177.5074,1273089.554,9.29155302 +482177.5074,1273089.554,9.29155302 +483177.5074,1273089.554,9.29155302 +484177.5074,1273089.554,9.29155302 +485177.5074,1273089.554,9.29155302 +486177.5074,1273089.554,10.3158502 +487177.5074,1273089.554,7.551140149 +488177.5074,1273089.554,7.385245387 +489177.5074,1273089.554,7.530442409 +490177.5074,1273089.554,43.4853791 +491177.5074,1273089.554,165.1327661 +492177.5074,1273089.554,165.1327661 +493177.5074,1273089.554,107.8259692 +494177.5074,1273089.554,17.68264585 +495177.5074,1273089.554,17.68264585 +496177.5074,1273089.554,17.68264585 +497177.5074,1273089.554,17.68264585 +498177.5074,1273089.554,17.68264585 +499177.5074,1273089.554,17.68264585 +500177.5074,1273089.554,17.68264585 +501177.5074,1273089.554,17.68264585 +502177.5074,1273089.554,17.68264585 +503177.5074,1273089.554,4.648829891 +504177.5074,1273089.554,NA +505177.5074,1273089.554,NA +469177.5074,1274089.554,NA +470177.5074,1274089.554,NA +471177.5074,1274089.554,NA +472177.5074,1274089.554,0.578890129 +473177.5074,1274089.554,0.861633893 +474177.5074,1274089.554,7.380356245 +475177.5074,1274089.554,9.29155302 +476177.5074,1274089.554,9.29155302 +477177.5074,1274089.554,9.29155302 +478177.5074,1274089.554,9.29155302 +479177.5074,1274089.554,9.29155302 +480177.5074,1274089.554,9.29155302 +481177.5074,1274089.554,9.29155302 +482177.5074,1274089.554,9.29155302 +483177.5074,1274089.554,9.29155302 +484177.5074,1274089.554,9.29155302 +485177.5074,1274089.554,83.05351589 +486177.5074,1274089.554,154.2220072 +487177.5074,1274089.554,150.4023554 +488177.5074,1274089.554,142.9737457 +489177.5074,1274089.554,147.4105553 +490177.5074,1274089.554,165.1327661 +491177.5074,1274089.554,386.4658472 +492177.5074,1274089.554,210.8952483 +493177.5074,1274089.554,66.47600107 +494177.5074,1274089.554,17.68264585 +495177.5074,1274089.554,17.68264585 +496177.5074,1274089.554,17.68264585 +497177.5074,1274089.554,17.68264585 +498177.5074,1274089.554,17.68264585 +499177.5074,1274089.554,17.68264585 +500177.5074,1274089.554,17.68264585 +501177.5074,1274089.554,17.68264585 +502177.5074,1274089.554,17.68264585 +503177.5074,1274089.554,14.04430753 +504177.5074,1274089.554,1.04765732 +505177.5074,1274089.554,NA +469177.5074,1275089.554,NA +470177.5074,1275089.554,NA +471177.5074,1275089.554,NA +472177.5074,1275089.554,5.533966865 +473177.5074,1275089.554,9.264426252 +474177.5074,1275089.554,9.29155302 +475177.5074,1275089.554,9.29155302 +476177.5074,1275089.554,9.29155302 +477177.5074,1275089.554,9.29155302 +478177.5074,1275089.554,9.29155302 +479177.5074,1275089.554,9.29155302 +480177.5074,1275089.554,9.29155302 +481177.5074,1275089.554,9.29155302 +482177.5074,1275089.554,9.29155302 +483177.5074,1275089.554,9.29155302 +484177.5074,1275089.554,9.29155302 +485177.5074,1275089.554,119.0012236 +486177.5074,1275089.554,165.1327661 +487177.5074,1275089.554,165.1327661 +488177.5074,1275089.554,165.1327661 +489177.5074,1275089.554,165.1327661 +490177.5074,1275089.554,303.1667064 +491177.5074,1275089.554,870.5340626 +492177.5074,1275089.554,767.5111605 +493177.5074,1275089.554,18.21018016 +494177.5074,1275089.554,17.68264585 +495177.5074,1275089.554,17.68264585 +496177.5074,1275089.554,17.68264585 +497177.5074,1275089.554,17.68264585 +498177.5074,1275089.554,17.68264585 +499177.5074,1275089.554,17.68264585 +500177.5074,1275089.554,17.68264585 +501177.5074,1275089.554,17.68264585 +502177.5074,1275089.554,17.68264585 +503177.5074,1275089.554,17.68264585 +504177.5074,1275089.554,10.00597116 +505177.5074,1275089.554,NA +469177.5074,1276089.554,NA +470177.5074,1276089.554,1.312301189 +471177.5074,1276089.554,3.634301204 +472177.5074,1276089.554,7.702206433 +473177.5074,1276089.554,9.29155302 +474177.5074,1276089.554,9.29155302 +475177.5074,1276089.554,9.29155302 +476177.5074,1276089.554,9.29155302 +477177.5074,1276089.554,9.29155302 +478177.5074,1276089.554,9.29155302 +479177.5074,1276089.554,9.29155302 +480177.5074,1276089.554,9.29155302 +481177.5074,1276089.554,9.29155302 +482177.5074,1276089.554,9.29155302 +483177.5074,1276089.554,9.29155302 +484177.5074,1276089.554,9.29155302 +485177.5074,1276089.554,110.0358184 +486177.5074,1276089.554,153.2485055 +487177.5074,1276089.554,163.5746511 +488177.5074,1276089.554,165.1327661 +489177.5074,1276089.554,363.5264653 +490177.5074,1276089.554,764.6955646 +491177.5074,1276089.554,875.0763521 +492177.5074,1276089.554,875.0763521 +493177.5074,1276089.554,588.9578758 +494177.5074,1276089.554,83.91474791 +495177.5074,1276089.554,17.68264585 +496177.5074,1276089.554,17.68264585 +497177.5074,1276089.554,14.91998283 +498177.5074,1276089.554,11.39764859 +499177.5074,1276089.554,8.793718902 +500177.5074,1276089.554,8.821503763 +501177.5074,1276089.554,9.340034938 +502177.5074,1276089.554,9.755476939 +503177.5074,1276089.554,6.038711855 +504177.5074,1276089.554,1.779179914 +505177.5074,1276089.554,NA +469177.5074,1277089.554,NA +470177.5074,1277089.554,4.420031259 +471177.5074,1277089.554,9.29155302 +472177.5074,1277089.554,9.29155302 +473177.5074,1277089.554,9.29155302 +474177.5074,1277089.554,9.29155302 +475177.5074,1277089.554,9.29155302 +476177.5074,1277089.554,9.29155302 +477177.5074,1277089.554,9.29155302 +478177.5074,1277089.554,9.29155302 +479177.5074,1277089.554,9.29155302 +480177.5074,1277089.554,9.29155302 +481177.5074,1277089.554,9.29155302 +482177.5074,1277089.554,9.29155302 +483177.5074,1277089.554,9.29155302 +484177.5074,1277089.554,9.29155302 +485177.5074,1277089.554,36.12808473 +486177.5074,1277089.554,48.24575098 +487177.5074,1277089.554,50.41027587 +488177.5074,1277089.554,1529.107661 +489177.5074,1277089.554,1731.086567 +490177.5074,1277089.554,1989.825956 +491177.5074,1277089.554,1406.559149 +492177.5074,1277089.554,895.0244313 +493177.5074,1277089.554,875.9813442 +494177.5074,1277089.554,583.4736538 +495177.5074,1277089.554,14.79145452 +496177.5074,1277089.554,5.557176905 +497177.5074,1277089.554,0.009008813 +498177.5074,1277089.554,NA +499177.5074,1277089.554,NA +500177.5074,1277089.554,NA +501177.5074,1277089.554,NA +502177.5074,1277089.554,NA +503177.5074,1277089.554,NA +504177.5074,1277089.554,NA +505177.5074,1277089.554,NA +469177.5074,1278089.554,0.334136295 +470177.5074,1278089.554,8.494439603 +471177.5074,1278089.554,9.29155302 +472177.5074,1278089.554,9.29155302 +473177.5074,1278089.554,9.29155302 +474177.5074,1278089.554,9.29155302 +475177.5074,1278089.554,9.29155302 +476177.5074,1278089.554,9.29155302 +477177.5074,1278089.554,9.29155302 +478177.5074,1278089.554,9.29155302 +479177.5074,1278089.554,9.29155302 +480177.5074,1278089.554,9.29155302 +481177.5074,1278089.554,9.29155302 +482177.5074,1278089.554,9.29155302 +483177.5074,1278089.554,9.29155302 +484177.5074,1278089.554,9.29155302 +485177.5074,1278089.554,32.80226737 +486177.5074,1278089.554,48.24575098 +487177.5074,1278089.554,48.24575098 +488177.5074,1278089.554,1472.283044 +489177.5074,1278089.554,2117.192287 +490177.5074,1278089.554,11307.48731 +491177.5074,1278089.554,7950.949897 +492177.5074,1278089.554,1176.240987 +493177.5074,1278089.554,959.5240107 +494177.5074,1278089.554,524.0149917 +495177.5074,1278089.554,1.391335589 +496177.5074,1278089.554,NA +497177.5074,1278089.554,NA +498177.5074,1278089.554,NA +499177.5074,1278089.554,NA +500177.5074,1278089.554,NA +501177.5074,1278089.554,NA +502177.5074,1278089.554,NA +503177.5074,1278089.554,NA +504177.5074,1278089.554,NA +505177.5074,1278089.554,NA +469177.5074,1279089.554,3.010843848 +470177.5074,1279089.554,9.128206172 +471177.5074,1279089.554,9.29155302 +472177.5074,1279089.554,9.29155302 +473177.5074,1279089.554,9.29155302 +474177.5074,1279089.554,9.29155302 +475177.5074,1279089.554,9.29155302 +476177.5074,1279089.554,9.29155302 +477177.5074,1279089.554,9.29155302 +478177.5074,1279089.554,9.29155302 +479177.5074,1279089.554,9.29155302 +480177.5074,1279089.554,9.29155302 +481177.5074,1279089.554,31.88846521 +482177.5074,1279089.554,42.28883003 +483177.5074,1279089.554,46.04467788 +484177.5074,1279089.554,45.8749783 +485177.5074,1279089.554,45.75479604 +486177.5074,1279089.554,48.24575098 +487177.5074,1279089.554,48.24575098 +488177.5074,1279089.554,1849.066983 +489177.5074,1279089.554,2084.421051 +490177.5074,1279089.554,6476.858563 +491177.5074,1279089.554,4134.284502 +492177.5074,1279089.554,1054.623415 +493177.5074,1279089.554,79.80860664 +494177.5074,1279089.554,3.175043112 +495177.5074,1279089.554,NA +496177.5074,1279089.554,NA +497177.5074,1279089.554,NA +498177.5074,1279089.554,NA +499177.5074,1279089.554,NA +500177.5074,1279089.554,NA +501177.5074,1279089.554,NA +502177.5074,1279089.554,NA +503177.5074,1279089.554,NA +504177.5074,1279089.554,NA +505177.5074,1279089.554,NA +469177.5074,1280089.554,0.700264288 +470177.5074,1280089.554,0.57591495 +471177.5074,1280089.554,7.162828868 +472177.5074,1280089.554,9.29155302 +473177.5074,1280089.554,9.29155302 +474177.5074,1280089.554,9.29155302 +475177.5074,1280089.554,9.29155302 +476177.5074,1280089.554,9.29155302 +477177.5074,1280089.554,9.29155302 +478177.5074,1280089.554,9.291190434 +479177.5074,1280089.554,7.450193851 +480177.5074,1280089.554,6.667569237 +481177.5074,1280089.554,38.16241796 +482177.5074,1280089.554,48.24575098 +483177.5074,1280089.554,48.24575098 +484177.5074,1280089.554,48.24575098 +485177.5074,1280089.554,48.24575098 +486177.5074,1280089.554,48.24575098 +487177.5074,1280089.554,48.24575098 +488177.5074,1280089.554,1890.359898 +489177.5074,1280089.554,2049.296396 +490177.5074,1280089.554,1180.249452 +491177.5074,1280089.554,1176.240987 +492177.5074,1280089.554,388.1141206 +493177.5074,1280089.554,8.467339947 +494177.5074,1280089.554,2.535063442 +495177.5074,1280089.554,NA +496177.5074,1280089.554,NA +497177.5074,1280089.554,NA +498177.5074,1280089.554,NA +499177.5074,1280089.554,NA +500177.5074,1280089.554,NA +501177.5074,1280089.554,NA +502177.5074,1280089.554,NA +503177.5074,1280089.554,NA +504177.5074,1280089.554,NA +505177.5074,1280089.554,NA +469177.5074,1281089.554,NA +470177.5074,1281089.554,NA +471177.5074,1281089.554,3.449329737 +472177.5074,1281089.554,7.194207669 +473177.5074,1281089.554,8.010335974 +474177.5074,1281089.554,8.675800628 +475177.5074,1281089.554,9.289469748 +476177.5074,1281089.554,9.29155302 +477177.5074,1281089.554,9.29155302 +478177.5074,1281089.554,7.401034285 +479177.5074,1281089.554,4.15423685 +480177.5074,1281089.554,4.15423685 +481177.5074,1281089.554,8.629858959 +482177.5074,1281089.554,47.50554825 +483177.5074,1281089.554,48.24575098 +484177.5074,1281089.554,48.24575098 +485177.5074,1281089.554,48.24575098 +486177.5074,1281089.554,48.24575098 +487177.5074,1281089.554,48.24575098 +488177.5074,1281089.554,605.4347275 +489177.5074,1281089.554,755.8774437 +490177.5074,1281089.554,290.338832 +491177.5074,1281089.554,576.6242952 +492177.5074,1281089.554,8.772270046 +493177.5074,1281089.554,8.467339947 +494177.5074,1281089.554,1.306488113 +495177.5074,1281089.554,NA +496177.5074,1281089.554,NA +497177.5074,1281089.554,NA +498177.5074,1281089.554,NA +499177.5074,1281089.554,NA +500177.5074,1281089.554,NA +501177.5074,1281089.554,NA +502177.5074,1281089.554,NA +503177.5074,1281089.554,NA +504177.5074,1281089.554,NA +505177.5074,1281089.554,NA +469177.5074,1282089.554,NA +470177.5074,1282089.554,NA +471177.5074,1282089.554,2.443304071 +472177.5074,1282089.554,4.15423685 +473177.5074,1282089.554,4.15423685 +474177.5074,1282089.554,4.15423685 +475177.5074,1282089.554,5.347955977 +476177.5074,1282089.554,8.99509054 +477177.5074,1282089.554,9.29155302 +478177.5074,1282089.554,6.232765364 +479177.5074,1282089.554,4.15423685 +480177.5074,1282089.554,4.15423685 +481177.5074,1282089.554,4.15423685 +482177.5074,1282089.554,43.99198991 +483177.5074,1282089.554,48.24575098 +484177.5074,1282089.554,48.24575098 +485177.5074,1282089.554,48.24575098 +486177.5074,1282089.554,48.24575098 +487177.5074,1282089.554,48.24575098 +488177.5074,1282089.554,140.642606 +489177.5074,1282089.554,248.5556501 +490177.5074,1282089.554,248.5556501 +491177.5074,1282089.554,164.3650742 +492177.5074,1282089.554,8.467339947 +493177.5074,1282089.554,7.13823923 +494177.5074,1282089.554,0.011478743 +495177.5074,1282089.554,NA +496177.5074,1282089.554,NA +497177.5074,1282089.554,NA +498177.5074,1282089.554,NA +499177.5074,1282089.554,NA +500177.5074,1282089.554,NA +501177.5074,1282089.554,NA +502177.5074,1282089.554,NA +503177.5074,1282089.554,NA +504177.5074,1282089.554,NA +505177.5074,1282089.554,NA +469177.5074,1283089.554,NA +470177.5074,1283089.554,NA +471177.5074,1283089.554,2.270264454 +472177.5074,1283089.554,4.15423685 +473177.5074,1283089.554,4.15423685 +474177.5074,1283089.554,4.15423685 +475177.5074,1283089.554,4.15423685 +476177.5074,1283089.554,6.247574041 +477177.5074,1283089.554,7.32861192 +478177.5074,1283089.554,4.391822476 +479177.5074,1283089.554,4.15423685 +480177.5074,1283089.554,4.15423685 +481177.5074,1283089.554,4.15423685 +482177.5074,1283089.554,43.71203519 +483177.5074,1283089.554,48.24575098 +484177.5074,1283089.554,48.24575098 +485177.5074,1283089.554,48.24575098 +486177.5074,1283089.554,48.24575098 +487177.5074,1283089.554,59.82952242 +488177.5074,1283089.554,237.1630096 +489177.5074,1283089.554,248.5556501 +490177.5074,1283089.554,248.5556501 +491177.5074,1283089.554,175.7273718 +492177.5074,1283089.554,8.467339947 +493177.5074,1283089.554,4.674866858 +494177.5074,1283089.554,NA +495177.5074,1283089.554,NA +496177.5074,1283089.554,NA +497177.5074,1283089.554,NA +498177.5074,1283089.554,NA +499177.5074,1283089.554,NA +500177.5074,1283089.554,NA +501177.5074,1283089.554,NA +502177.5074,1283089.554,NA +503177.5074,1283089.554,NA +504177.5074,1283089.554,NA +505177.5074,1283089.554,NA +469177.5074,1284089.554,NA +470177.5074,1284089.554,NA +471177.5074,1284089.554,0.878117812 +472177.5074,1284089.554,4.15423685 +473177.5074,1284089.554,4.15423685 +474177.5074,1284089.554,4.15423685 +475177.5074,1284089.554,4.15423685 +476177.5074,1284089.554,4.15423685 +477177.5074,1284089.554,4.15423685 +478177.5074,1284089.554,4.15423685 +479177.5074,1284089.554,4.15423685 +480177.5074,1284089.554,4.15423685 +481177.5074,1284089.554,4.15423685 +482177.5074,1284089.554,33.96823554 +483177.5074,1284089.554,48.24575098 +484177.5074,1284089.554,48.24575098 +485177.5074,1284089.554,48.24575098 +486177.5074,1284089.554,48.24575098 +487177.5074,1284089.554,155.8005372 +488177.5074,1284089.554,248.5556501 +489177.5074,1284089.554,248.5556501 +490177.5074,1284089.554,248.5556501 +491177.5074,1284089.554,126.2608582 +492177.5074,1284089.554,8.467339947 +493177.5074,1284089.554,1.354395055 +494177.5074,1284089.554,NA +495177.5074,1284089.554,NA +496177.5074,1284089.554,NA +497177.5074,1284089.554,NA +498177.5074,1284089.554,NA +499177.5074,1284089.554,NA +500177.5074,1284089.554,NA +501177.5074,1284089.554,NA +502177.5074,1284089.554,NA +503177.5074,1284089.554,NA +504177.5074,1284089.554,NA +505177.5074,1284089.554,NA +469177.5074,1285089.554,NA +470177.5074,1285089.554,NA +471177.5074,1285089.554,0.007142854 +472177.5074,1285089.554,3.827059219 +473177.5074,1285089.554,4.15423685 +474177.5074,1285089.554,4.15423685 +475177.5074,1285089.554,4.15423685 +476177.5074,1285089.554,4.15423685 +477177.5074,1285089.554,4.15423685 +478177.5074,1285089.554,4.15423685 +479177.5074,1285089.554,4.15423685 +480177.5074,1285089.554,4.15423685 +481177.5074,1285089.554,4.15423685 +482177.5074,1285089.554,20.94438503 +483177.5074,1285089.554,48.24575098 +484177.5074,1285089.554,48.24575098 +485177.5074,1285089.554,48.24575098 +486177.5074,1285089.554,105.8397185 +487177.5074,1285089.554,245.2155979 +488177.5074,1285089.554,248.5556501 +489177.5074,1285089.554,248.5556501 +490177.5074,1285089.554,207.2553259 +491177.5074,1285089.554,20.72847137 +492177.5074,1285089.554,8.36303216 +493177.5074,1285089.554,0.228732757 +494177.5074,1285089.554,NA +495177.5074,1285089.554,NA +496177.5074,1285089.554,NA +497177.5074,1285089.554,NA +498177.5074,1285089.554,NA +499177.5074,1285089.554,NA +500177.5074,1285089.554,NA +501177.5074,1285089.554,NA +502177.5074,1285089.554,NA +503177.5074,1285089.554,NA +504177.5074,1285089.554,NA +505177.5074,1285089.554,NA +469177.5074,1286089.554,NA +470177.5074,1286089.554,NA +471177.5074,1286089.554,NA +472177.5074,1286089.554,2.988692904 +473177.5074,1286089.554,4.15423685 +474177.5074,1286089.554,4.15423685 +475177.5074,1286089.554,4.15423685 +476177.5074,1286089.554,4.15423685 +477177.5074,1286089.554,4.15423685 +478177.5074,1286089.554,4.15423685 +479177.5074,1286089.554,4.15423685 +480177.5074,1286089.554,4.15423685 +481177.5074,1286089.554,4.15423685 +482177.5074,1286089.554,22.32772165 +483177.5074,1286089.554,48.24575098 +484177.5074,1286089.554,48.24575098 +485177.5074,1286089.554,48.24575098 +486177.5074,1286089.554,146.0803321 +487177.5074,1286089.554,248.5556501 +488177.5074,1286089.554,244.0478237 +489177.5074,1286089.554,158.4647302 +490177.5074,1286089.554,21.85514304 +491177.5074,1286089.554,8.467339947 +492177.5074,1286089.554,8.467339947 +493177.5074,1286089.554,1.808294231 +494177.5074,1286089.554,NA +495177.5074,1286089.554,NA +496177.5074,1286089.554,NA +497177.5074,1286089.554,NA +498177.5074,1286089.554,NA +499177.5074,1286089.554,NA +500177.5074,1286089.554,NA +501177.5074,1286089.554,NA +502177.5074,1286089.554,NA +503177.5074,1286089.554,NA +504177.5074,1286089.554,NA +505177.5074,1286089.554,NA +469177.5074,1287089.554,NA +470177.5074,1287089.554,NA +471177.5074,1287089.554,NA +472177.5074,1287089.554,2.744398299 +473177.5074,1287089.554,4.15423685 +474177.5074,1287089.554,4.15423685 +475177.5074,1287089.554,4.15423685 +476177.5074,1287089.554,4.15423685 +477177.5074,1287089.554,4.15423685 +478177.5074,1287089.554,4.15423685 +479177.5074,1287089.554,4.15423685 +480177.5074,1287089.554,4.15423685 +481177.5074,1287089.554,4.15423685 +482177.5074,1287089.554,4.171718023 +483177.5074,1287089.554,20.68863247 +484177.5074,1287089.554,45.49503431 +485177.5074,1287089.554,108.5133149 +486177.5074,1287089.554,217.4825433 +487177.5074,1287089.554,133.2002047 +488177.5074,1287089.554,31.52175005 +489177.5074,1287089.554,8.467339947 +490177.5074,1287089.554,8.467339947 +491177.5074,1287089.554,8.467339947 +492177.5074,1287089.554,8.467339947 +493177.5074,1287089.554,5.196865566 +494177.5074,1287089.554,NA +495177.5074,1287089.554,NA +496177.5074,1287089.554,NA +497177.5074,1287089.554,NA +498177.5074,1287089.554,NA +499177.5074,1287089.554,NA +500177.5074,1287089.554,NA +501177.5074,1287089.554,NA +502177.5074,1287089.554,NA +503177.5074,1287089.554,NA +504177.5074,1287089.554,NA +505177.5074,1287089.554,NA +469177.5074,1288089.554,NA +470177.5074,1288089.554,NA +471177.5074,1288089.554,NA +472177.5074,1288089.554,1.502799563 +473177.5074,1288089.554,4.15423685 +474177.5074,1288089.554,4.15423685 +475177.5074,1288089.554,4.15423685 +476177.5074,1288089.554,4.15423685 +477177.5074,1288089.554,4.15423685 +478177.5074,1288089.554,4.15423685 +479177.5074,1288089.554,4.15423685 +480177.5074,1288089.554,4.15423685 +481177.5074,1288089.554,4.15423685 +482177.5074,1288089.554,4.15423685 +483177.5074,1288089.554,4.15423685 +484177.5074,1288089.554,19.74501415 +485177.5074,1288089.554,189.8431083 +486177.5074,1288089.554,124.9055821 +487177.5074,1288089.554,8.467339947 +488177.5074,1288089.554,8.467339947 +489177.5074,1288089.554,8.467339947 +490177.5074,1288089.554,8.467339947 +491177.5074,1288089.554,8.467339947 +492177.5074,1288089.554,8.467339947 +493177.5074,1288089.554,8.453766822 +494177.5074,1288089.554,2.335159611 +495177.5074,1288089.554,NA +496177.5074,1288089.554,NA +497177.5074,1288089.554,NA +498177.5074,1288089.554,NA +499177.5074,1288089.554,NA +500177.5074,1288089.554,NA +501177.5074,1288089.554,NA +502177.5074,1288089.554,NA +503177.5074,1288089.554,NA +504177.5074,1288089.554,NA +505177.5074,1288089.554,NA +469177.5074,1289089.554,NA +470177.5074,1289089.554,NA +471177.5074,1289089.554,NA +472177.5074,1289089.554,0.410825136 +473177.5074,1289089.554,4.086940838 +474177.5074,1289089.554,4.15423685 +475177.5074,1289089.554,4.15423685 +476177.5074,1289089.554,4.15423685 +477177.5074,1289089.554,4.15423685 +478177.5074,1289089.554,4.15423685 +479177.5074,1289089.554,4.15423685 +480177.5074,1289089.554,4.15423685 +481177.5074,1289089.554,4.15423685 +482177.5074,1289089.554,4.15423685 +483177.5074,1289089.554,4.15423685 +484177.5074,1289089.554,4.15423685 +485177.5074,1289089.554,9.382786146 +486177.5074,1289089.554,12.33513067 +487177.5074,1289089.554,8.467339947 +488177.5074,1289089.554,8.467339947 +489177.5074,1289089.554,8.467339947 +490177.5074,1289089.554,8.467339947 +491177.5074,1289089.554,8.467339947 +492177.5074,1289089.554,8.467339947 +493177.5074,1289089.554,8.467339947 +494177.5074,1289089.554,6.453650855 +495177.5074,1289089.554,NA +496177.5074,1289089.554,NA +497177.5074,1289089.554,NA +498177.5074,1289089.554,NA +499177.5074,1289089.554,NA +500177.5074,1289089.554,NA +501177.5074,1289089.554,NA +502177.5074,1289089.554,NA +503177.5074,1289089.554,NA +504177.5074,1289089.554,NA +505177.5074,1289089.554,NA +469177.5074,1290089.554,NA +470177.5074,1290089.554,NA +471177.5074,1290089.554,NA +472177.5074,1290089.554,NA +473177.5074,1290089.554,0.128663598 +474177.5074,1290089.554,0.372400356 +475177.5074,1290089.554,1.343681457 +476177.5074,1290089.554,2.424073703 +477177.5074,1290089.554,2.978175328 +478177.5074,1290089.554,3.095209154 +479177.5074,1290089.554,3.522622167 +480177.5074,1290089.554,4.15423685 +481177.5074,1290089.554,4.15423685 +482177.5074,1290089.554,4.15423685 +483177.5074,1290089.554,4.15423685 +484177.5074,1290089.554,3.922575141 +485177.5074,1290089.554,5.168122585 +486177.5074,1290089.554,6.593224943 +487177.5074,1290089.554,6.364755195 +488177.5074,1290089.554,6.29521306 +489177.5074,1290089.554,8.040457727 +490177.5074,1290089.554,8.467339947 +491177.5074,1290089.554,8.467339947 +492177.5074,1290089.554,8.467339947 +493177.5074,1290089.554,8.467339947 +494177.5074,1290089.554,8.4276445 +495177.5074,1290089.554,1.22238012 +496177.5074,1290089.554,NA +497177.5074,1290089.554,NA +498177.5074,1290089.554,NA +499177.5074,1290089.554,NA +500177.5074,1290089.554,NA +501177.5074,1290089.554,NA +502177.5074,1290089.554,NA +503177.5074,1290089.554,NA +504177.5074,1290089.554,NA +505177.5074,1290089.554,NA +469177.5074,1291089.554,NA +470177.5074,1291089.554,NA +471177.5074,1291089.554,NA +472177.5074,1291089.554,NA +473177.5074,1291089.554,NA +474177.5074,1291089.554,NA +475177.5074,1291089.554,NA +476177.5074,1291089.554,NA +477177.5074,1291089.554,NA +478177.5074,1291089.554,NA +479177.5074,1291089.554,0.95577425 +480177.5074,1291089.554,4.15423685 +481177.5074,1291089.554,4.15423685 +482177.5074,1291089.554,4.15423685 +483177.5074,1291089.554,4.15423685 +484177.5074,1291089.554,1.826810114 +485177.5074,1291089.554,NA +486177.5074,1291089.554,NA +487177.5074,1291089.554,NA +488177.5074,1291089.554,NA +489177.5074,1291089.554,6.246079963 +490177.5074,1291089.554,8.467339947 +491177.5074,1291089.554,8.467339947 +492177.5074,1291089.554,8.467339947 +493177.5074,1291089.554,8.467339947 +494177.5074,1291089.554,8.467339947 +495177.5074,1291089.554,6.137071641 +496177.5074,1291089.554,NA +497177.5074,1291089.554,NA +498177.5074,1291089.554,NA +499177.5074,1291089.554,NA +500177.5074,1291089.554,NA +501177.5074,1291089.554,NA +502177.5074,1291089.554,NA +503177.5074,1291089.554,NA +504177.5074,1291089.554,NA +505177.5074,1291089.554,NA +469177.5074,1292089.554,NA +470177.5074,1292089.554,NA +471177.5074,1292089.554,NA +472177.5074,1292089.554,NA +473177.5074,1292089.554,NA +474177.5074,1292089.554,NA +475177.5074,1292089.554,NA +476177.5074,1292089.554,NA +477177.5074,1292089.554,NA +478177.5074,1292089.554,NA +479177.5074,1292089.554,0.014196492 +480177.5074,1292089.554,3.32415167 +481177.5074,1292089.554,4.15423685 +482177.5074,1292089.554,4.15423685 +483177.5074,1292089.554,3.224543107 +484177.5074,1292089.554,0.053008273 +485177.5074,1292089.554,NA +486177.5074,1292089.554,NA +487177.5074,1292089.554,NA +488177.5074,1292089.554,NA +489177.5074,1292089.554,5.083822507 +490177.5074,1292089.554,8.467339947 +491177.5074,1292089.554,8.467339947 +492177.5074,1292089.554,8.467339947 +493177.5074,1292089.554,8.467339947 +494177.5074,1292089.554,8.467339947 +495177.5074,1292089.554,8.465341769 +496177.5074,1292089.554,1.259666327 +497177.5074,1292089.554,NA +498177.5074,1292089.554,NA +499177.5074,1292089.554,NA +500177.5074,1292089.554,NA +501177.5074,1292089.554,NA +502177.5074,1292089.554,NA +503177.5074,1292089.554,NA +504177.5074,1292089.554,NA +505177.5074,1292089.554,NA +469177.5074,1293089.554,NA +470177.5074,1293089.554,NA +471177.5074,1293089.554,NA +472177.5074,1293089.554,NA +473177.5074,1293089.554,NA +474177.5074,1293089.554,NA +475177.5074,1293089.554,NA +476177.5074,1293089.554,NA +477177.5074,1293089.554,NA +478177.5074,1293089.554,NA +479177.5074,1293089.554,NA +480177.5074,1293089.554,3.36454725 +481177.5074,1293089.554,4.15423685 +482177.5074,1293089.554,4.15423685 +483177.5074,1293089.554,1.776356388 +484177.5074,1293089.554,NA +485177.5074,1293089.554,NA +486177.5074,1293089.554,NA +487177.5074,1293089.554,NA +488177.5074,1293089.554,NA +489177.5074,1293089.554,0.435332066 +490177.5074,1293089.554,6.702408595 +491177.5074,1293089.554,8.467339947 +492177.5074,1293089.554,8.467339947 +493177.5074,1293089.554,8.467339947 +494177.5074,1293089.554,8.467339947 +495177.5074,1293089.554,8.467339947 +496177.5074,1293089.554,3.249823508 +497177.5074,1293089.554,NA +498177.5074,1293089.554,NA +499177.5074,1293089.554,NA +500177.5074,1293089.554,NA +501177.5074,1293089.554,NA +502177.5074,1293089.554,NA +503177.5074,1293089.554,NA +504177.5074,1293089.554,NA +505177.5074,1293089.554,NA +469177.5074,1294089.554,NA +470177.5074,1294089.554,NA +471177.5074,1294089.554,NA +472177.5074,1294089.554,NA +473177.5074,1294089.554,NA +474177.5074,1294089.554,NA +475177.5074,1294089.554,NA +476177.5074,1294089.554,NA +477177.5074,1294089.554,NA +478177.5074,1294089.554,NA +479177.5074,1294089.554,NA +480177.5074,1294089.554,2.060272412 +481177.5074,1294089.554,4.102273787 +482177.5074,1294089.554,4.15423685 +483177.5074,1294089.554,0.650778861 +484177.5074,1294089.554,NA +485177.5074,1294089.554,NA +486177.5074,1294089.554,NA +487177.5074,1294089.554,NA +488177.5074,1294089.554,NA +489177.5074,1294089.554,NA +490177.5074,1294089.554,3.572728419 +491177.5074,1294089.554,8.467339947 +492177.5074,1294089.554,8.467339947 +493177.5074,1294089.554,8.467339947 +494177.5074,1294089.554,8.467339947 +495177.5074,1294089.554,8.467339947 +496177.5074,1294089.554,5.636036874 +497177.5074,1294089.554,NA +498177.5074,1294089.554,NA +499177.5074,1294089.554,NA +500177.5074,1294089.554,NA +501177.5074,1294089.554,NA +502177.5074,1294089.554,NA +503177.5074,1294089.554,NA +504177.5074,1294089.554,NA +505177.5074,1294089.554,NA +469177.5074,1295089.554,NA +470177.5074,1295089.554,NA +471177.5074,1295089.554,NA +472177.5074,1295089.554,NA +473177.5074,1295089.554,NA +474177.5074,1295089.554,NA +475177.5074,1295089.554,NA +476177.5074,1295089.554,NA +477177.5074,1295089.554,NA +478177.5074,1295089.554,NA +479177.5074,1295089.554,NA +480177.5074,1295089.554,NA +481177.5074,1295089.554,2.319305339 +482177.5074,1295089.554,1.937954436 +483177.5074,1295089.554,5.50E-06 +484177.5074,1295089.554,NA +485177.5074,1295089.554,NA +486177.5074,1295089.554,NA +487177.5074,1295089.554,NA +488177.5074,1295089.554,NA +489177.5074,1295089.554,NA +490177.5074,1295089.554,0.567253836 +491177.5074,1295089.554,7.68070357 +492177.5074,1295089.554,8.467339947 +493177.5074,1295089.554,8.467339947 +494177.5074,1295089.554,8.467339947 +495177.5074,1295089.554,6.345216467 +496177.5074,1295089.554,0.191156599 +497177.5074,1295089.554,NA +498177.5074,1295089.554,NA +499177.5074,1295089.554,NA +500177.5074,1295089.554,NA +501177.5074,1295089.554,NA +502177.5074,1295089.554,NA +503177.5074,1295089.554,NA +504177.5074,1295089.554,NA +505177.5074,1295089.554,NA +469177.5074,1296089.554,NA +470177.5074,1296089.554,NA +471177.5074,1296089.554,NA +472177.5074,1296089.554,NA +473177.5074,1296089.554,NA +474177.5074,1296089.554,NA +475177.5074,1296089.554,NA +476177.5074,1296089.554,NA +477177.5074,1296089.554,NA +478177.5074,1296089.554,NA +479177.5074,1296089.554,NA +480177.5074,1296089.554,NA +481177.5074,1296089.554,NA +482177.5074,1296089.554,NA +483177.5074,1296089.554,NA +484177.5074,1296089.554,NA +485177.5074,1296089.554,NA +486177.5074,1296089.554,NA +487177.5074,1296089.554,NA +488177.5074,1296089.554,NA +489177.5074,1296089.554,NA +490177.5074,1296089.554,NA +491177.5074,1296089.554,5.740188426 +492177.5074,1296089.554,8.467339947 +493177.5074,1296089.554,8.467339947 +494177.5074,1296089.554,7.551846532 +495177.5074,1296089.554,0.559601671 +496177.5074,1296089.554,NA +497177.5074,1296089.554,NA +498177.5074,1296089.554,NA +499177.5074,1296089.554,NA +500177.5074,1296089.554,NA +501177.5074,1296089.554,NA +502177.5074,1296089.554,NA +503177.5074,1296089.554,NA +504177.5074,1296089.554,NA +505177.5074,1296089.554,NA +469177.5074,1297089.554,NA +470177.5074,1297089.554,NA +471177.5074,1297089.554,NA +472177.5074,1297089.554,NA +473177.5074,1297089.554,NA +474177.5074,1297089.554,NA +475177.5074,1297089.554,NA +476177.5074,1297089.554,NA +477177.5074,1297089.554,NA +478177.5074,1297089.554,NA +479177.5074,1297089.554,NA +480177.5074,1297089.554,NA +481177.5074,1297089.554,NA +482177.5074,1297089.554,NA +483177.5074,1297089.554,NA +484177.5074,1297089.554,NA +485177.5074,1297089.554,NA +486177.5074,1297089.554,NA +487177.5074,1297089.554,NA +488177.5074,1297089.554,NA +489177.5074,1297089.554,NA +490177.5074,1297089.554,NA +491177.5074,1297089.554,4.288405628 +492177.5074,1297089.554,6.621772676 +493177.5074,1297089.554,6.499447176 +494177.5074,1297089.554,3.233268641 +495177.5074,1297089.554,NA +496177.5074,1297089.554,NA +497177.5074,1297089.554,NA +498177.5074,1297089.554,NA +499177.5074,1297089.554,NA +500177.5074,1297089.554,NA +501177.5074,1297089.554,NA +502177.5074,1297089.554,NA +503177.5074,1297089.554,NA +504177.5074,1297089.554,NA +505177.5074,1297089.554,NA diff --git a/img/Openstreetmap_logo.svg b/img/Openstreetmap_logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..c8a2502d0b0ce3d07a6c3571db9195b2490a11ef --- /dev/null +++ b/img/Openstreetmap_logo.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg id="svg3038" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="256" width="256" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs id="defs3040"> + <linearGradient id="linearGradient5762"> + <stop id="stop5764" stop-color="#2d3335" offset="0"/> + <stop id="stop5770" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4680"> + <stop id="stop4682" offset="0"/> + <stop id="stop4684" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4686-3" y2="-179.97" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="9" y1="-94.672" x1="94.25"/> + <linearGradient id="linearGradient4742-3" y2="-30.438" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="35.75" y1="-114.44" x1="50.75"/> + <linearGradient id="linearGradient4734-3" y2="-74.625" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="115.25" y1="-163.12" x1="77.625"/> + <linearGradient id="linearGradient4726-9" y2="7.0625" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="125.72" y1="-50.438" x1="56.5"/> + <linearGradient id="linearGradient4710-2" y2="-146.8" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="180.75" y1="-163.3" x1="35"/> + <linearGradient id="linearGradient4718-4" y2="-41.609" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="179" y1="-141.11" x1="57"/> + <linearGradient id="linearGradient4694-4" y2="39.75" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="208.25" y1="-26.5" x1="156"/> + <linearGradient id="linearGradient4702-4" y2="-77.297" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="235" y1="-169.3" x1="142.75"/> + <linearGradient id="linearGradient4806-9" y2="-113.72" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="166.5" y1="-161.36" x1="214.25"/> + <linearGradient id="linearGradient4744-9"> + <stop id="stop4746-3" stop-color="#fff" offset="0"/> + <stop id="stop4748-8" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4790-3" y2="-62.469" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="57.656" y1="-126.5" x1="53.25"/> + <linearGradient id="linearGradient4758-2" y2="-17.125" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="75.719" y1="6.625" x1="39.5"/> + <linearGradient id="linearGradient4750-9" y2="-121.44" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="85.312" y1="-162.34" x1="102"/> + <linearGradient id="linearGradient4782-5" y2="-14.75" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="63.5" y1="-78.094" x1="117.75"/> + <linearGradient id="linearGradient4798-4" y2="-60.75" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="133.94" y1="-125.12" x1="180.69"/> + <linearGradient id="linearGradient4766-3" y2="33.375" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="130.22" y1="-23.5" x1="170.75"/> + <linearGradient id="linearGradient4965" y2="-5.6563" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" y1="-76" x2="181.75" x1="213.5"/> + <linearGradient id="linearGradient5168" y2="-213.25" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="translate(0,-10)" y1="72.064" x1="210.17"/> + <clipPath id="clipPath5383" clipPathUnits="userSpaceOnUse"> + <path id="path5385" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5426" clipPathUnits="userSpaceOnUse"> + <path id="path5428" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5466" clipPathUnits="userSpaceOnUse"> + <path id="path5468" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <radialGradient id="radialGradient5751" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(1.0213 0 0 -1.0213 -212.72 173.83)" r="47"> + <stop id="stop5747" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient5768" y2="150.38" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-1,0,0,1,46,0)" y1="150.38" x1="123"/> + <linearGradient id="linearGradient5778" y2="143.36" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="130.88" gradientTransform="translate(-210)" y1="134.36" x1="128"/> + <linearGradient id="linearGradient5798" y2="150.38" gradientUnits="userSpaceOnUse" y1="150.38" gradientTransform="matrix(-2 0 0 1.7699 174 -86.65)" x2="133" x1="123"> + <stop id="stop5764-6" stop-color="#2d3335" offset="0"/> + <stop id="stop5770-3" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766-6" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5868" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="translate(-210)" y1="186.5" x1="120"> + <stop id="stop5864" stop-color="#f9e295" offset="0"/> + <stop id="stop5876" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874" stop-color="#fff" offset=".20581"/> + <stop id="stop5870" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5899" y2="186.5" gradientUnits="userSpaceOnUse" y1="186.5" gradientTransform="translate(-210,67)" x2="136" x1="120"> + <stop id="stop5864-0" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-0" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-6" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-4" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-4" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-3" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6241" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="matrix(.98427 .98427 -.98427 .98427 66.992 -59.216)" y1="186.5" x1="120"> + <stop id="stop5864-0-0" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-0-12" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-6-6" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-4-4" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-4-85" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-3-62" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6244" y2="150.38" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-1.9685 -1.9685 -1.7421 1.7421 596.19 167.51)" y1="150.38" x1="123"> + <stop id="stop5764-6-1" stop-color="#2d3335" offset="0"/> + <stop id="stop5770-3-6" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766-6-3" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6247" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="matrix(.98427 .98427 -.98427 .98427 132.94 -125.16)" y1="186.5" x1="120"> + <stop id="stop5864-8" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-09" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-2" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-3" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-1" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-8" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6250" y2="150.38" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-.98427 -.98427 -.98427 .98427 384.91 126.81)" y1="150.38" x1="123"/> + <linearGradient id="linearGradient6253" y2="143.36" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="130.88" gradientTransform="matrix(.98427 .98427 -.98427 .98427 132.94 -125.16)" y1="134.36" x1="128"/> + <radialGradient id="radialGradient6256" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(1.0052 1.0052 1.0052 -1.0052 -40.838 43.253)" r="47"> + <stop id="stop5747-3" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753-6" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755-9" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749-0" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient6279" y2="150.38" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" y1="167.73" gradientTransform="matrix(-1.9685 -1.9685 -1.7421 1.7421 596.19 167.51)" x2="133" x1="108"/> + <radialGradient id="radialGradient6427" gradientUnits="userSpaceOnUse" cy="72.588" cx="159.61" gradientTransform="matrix(1.2125 0 0 .83915 -46.348 24.528)" r="38.417"> + <stop id="stop6848" stop-color="#fff" offset="0"/> + <stop id="stop6852" stop-color="#fff" stop-opacity=".93050" offset=".5"/> + <stop id="stop6850" stop-color="#fff" stop-opacity="0" offset="1"/> + </radialGradient> + <radialGradient id="radialGradient6482" gradientUnits="userSpaceOnUse" cx="159.61" cy="72.588" r="38.417" gradientTransform="matrix(1.2125 0 0 .83915 -45.92 25.814)"> + <stop id="stop4746-3-8" stop-color="#fff" offset="0"/> + <stop id="stop4748-8-3" stop-color="#fff" stop-opacity="0" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient6595" y2="137.2" gradientUnits="userSpaceOnUse" x2="179.96" gradientTransform="translate(0,-10)" y1="29.815" x1="126.64"> + <stop id="stop6591" stop-color="#fff" offset="0"/> + <stop id="stop6593" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6614" y2="137.2" gradientUnits="userSpaceOnUse" y1="29.815" gradientTransform="matrix(-.50295 .19840 .19720 -.43254 276.16 123.42)" x2="179.96" x1="126.64"> + <stop id="stop6591-6" stop-color="#fff" offset="0"/> + <stop id="stop6593-1" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <filter id="filter7286"> + <feGaussianBlur id="feGaussianBlur7288" stdDeviation="4.2868936"/> + </filter> + <clipPath id="clipPath5466-2-3" clipPathUnits="userSpaceOnUse"> + <path id="path5468-3-2" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5383-0-0" clipPathUnits="userSpaceOnUse"> + <path id="path5385-7-8" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5426-1-6" clipPathUnits="userSpaceOnUse"> + <path id="path5428-0-9" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <linearGradient id="linearGradient5168-2-9" y2="-213.25" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="translate(0,192)" y1="72.064" x1="210.17"> + <stop id="stop4682-27-3" offset="0"/> + <stop id="stop4684-36-5" stop-opacity="0" offset="1"/> + </linearGradient> + <clipPath id="clipPath8617" clipPathUnits="userSpaceOnUse"> + <path id="path8619" d="m123.62 141.06c20.832 20.243 54.607 19.289 75.439-2.132s20.832-55.196 0-75.439-54.607-19.289-75.439 2.132-20.832 55.196 0 75.439z" fill="url(#radialGradient8621)"/> + </clipPath> + <radialGradient id="radialGradient8621" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(.80254 .77986 .80254 -.82522 -10.402 73.423)" r="47"> + <stop id="stop5747-3-73" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753-6-08" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755-9-5" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749-0-4" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <filter id="filter8661"> + <feGaussianBlur id="feGaussianBlur8663" stdDeviation="6.3109704"/> + </filter> + <filter id="filter8725"> + <feGaussianBlur id="feGaussianBlur8727" stdDeviation="4.4575"/> + </filter> + <linearGradient id="linearGradient8735" y2="4.302" gradientUnits="userSpaceOnUse" x2="122" y1="245.45" x1="122"> + <stop id="stop8731" offset="0"/> + <stop id="stop8733" stop-opacity="0" offset="1"/> + </linearGradient> + <clipPath id="clipPath8750" clipPathUnits="userSpaceOnUse"> + <path id="path8752" opacity=".039130" d="m9 22.578s7.5 12.393 11.75 26.8c4.25 14.406 6.25 24.995 6.25 24.995s-5.5 13.195-8.25 25.417c-2.75 12.22-5.75 23.46-5.75 23.46s5.75 15.535 9.25 29.252 3.75 23.947 3.75 23.947-4 10.574-7.5 24.857-5 31.154-5 31.154 9.25-2.7481 28.5-1.055 32.25 3.3917 32.25 3.3917 12.75-3.7812 24-8.1911 16.25-7.8143 16.25-7.8143 5.5 0.0552 22.5 4.4302c17 4.3751 29.25 6.1343 29.25 6.1343s13-3.8014 26-7.8528 26.5-10.143 26.5-10.143-0.75-4.9393 4.25-24.844c5-19.904 8.75-28.708 8.75-28.708s-0.5145-4.4553-3.75-19.447c-1.75-8.1085-2.25-4.068-2.25-4.068s16.264-26.155 16.5-40.334c0.25-15.02-7.25-36.413-7.25-36.413s-4.75-14.866-7.5-29.143c-2.75-14.278-8.25-25.083-8.25-25.083s-24.25 10.961-31.75 13.068c-7.5 2.1066-21 6.9484-21 6.9484s-9.75-3.4614-22-6.7207c-12.25-3.2592-29.75-3.0939-29.75-3.0939s-3.25 3.7629-22 9.7793c-18.75 6.0165-27.5 7.9741-27.5 7.9741s-18.5-7.5038-31.5-8.9524-24-0.05894-24.75 0.25172z" fill="url(#linearGradient8754)"/> + </clipPath> + <linearGradient id="linearGradient8754" y2="-213.25" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="matrix(1 -.080878 0 1 0 203.06)" y1="72.064" x1="210.17"> + <stop id="stop4682-9" offset="0"/> + <stop id="stop4684-38" stop-opacity="0" offset="1"/> + </linearGradient> + </defs> + <metadata id="metadata3043"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <g id="layer8"> + <g id="g8737" transform="translate(0,-10)"> + <path id="path5604-26-0-3" opacity=".7" d="m174.28 35.875c-17.6 0-35.19 6.639-48.72 19.906-0.16 0.164-0.33 0.303-0.5 0.469-22.05 22.056-26.206 55.25-12.47 81.5l-2.28 1.63c2.25 4.23 4.94 8.3 8.1 12.12l-13.32 13.34c-1.34-0.58-2.78-1.03-4.56-1.37l-2.842 2.84c-1.11-0.48-2.139-0.81-3.063-0.87l-64.125 64.12c-0.037 1.1 0.226 2.19 0.656 3.28l-0.531 0.54-1.094 1.09c0.716 3.74 2.011 6.82 5.469 10.28s6.42 4.63 10.281 5.47l1.094-1.1 0.719-0.71c1.088 0.46 2.13 0.78 3.094 0.84l64.122-64.13c-0.24-0.97-0.62-1.93-1.03-2.9l3-3c-0.25-1.73-0.68-3.2-1.31-4.6l13.28-13.28c3.82 3.16 7.89 5.85 12.13 8.1l1.62-2.28c26.25 13.74 59.44 9.58 81.5-12.47 0.17-0.17 0.31-0.34 0.47-0.5 26.69-27.22 26.55-70.923-0.47-97.94-13.59-13.59-31.41-20.375-49.22-20.375zm-0.5 3.281c0.11 0.002 0.21-0.002 0.31 0 0.95 0.019 1.9 0.066 2.85 0.125 0.96 0.061 1.92 0.148 2.87 0.25 0.1 0.01 0.19 0.021 0.28 0.031 0.1 0.011 0.19 0.021 0.29 0.032 0.14 0.017 0.29 0.044 0.43 0.062 0.9 0.11 1.8 0.228 2.69 0.375 0.62 0.102 1.23 0.224 1.84 0.344 0.35 0.066 0.69 0.116 1.04 0.187 0.72 0.153 1.43 0.324 2.15 0.5 0.31 0.077 0.63 0.138 0.94 0.219 0.07 0.019 0.14 0.043 0.22 0.063 0.95 0.253 1.89 0.516 2.84 0.812 0.07 0.023 0.15 0.04 0.22 0.063 0.95 0.3 1.91 0.625 2.84 0.969 0.06 0.019 0.11 0.042 0.16 0.062 0.95 0.352 1.9 0.728 2.84 1.125 0.06 0.022 0.11 0.041 0.16 0.063 0.94 0.4 1.88 0.836 2.81 1.281 0.04 0.02 0.09 0.042 0.13 0.062 0.93 0.451 1.86 0.91 2.78 1.407 0.03 0.017 0.06 0.044 0.09 0.062 0.93 0.503 1.84 1.013 2.75 1.562 0.03 0.02 0.06 0.044 0.1 0.063 0.9 0.551 1.8 1.122 2.68 1.719 0.55 0.369 1.09 0.769 1.63 1.156 0.36 0.261 0.73 0.512 1.09 0.781 0.02 0.014 0.05 0.018 0.06 0.031 0.88 0.656 1.75 1.36 2.6 2.063 1.74 1.434 3.43 2.963 5.06 4.594 1.62 1.62 3.14 3.3 4.56 5.031 0.01 0.011 0.03 0.02 0.03 0.031 0.71 0.855 1.41 1.715 2.07 2.594 0.28 0.379 0.54 0.773 0.81 1.156 0.37 0.517 0.74 1.038 1.09 1.563 0.02 0.024 0.05 0.038 0.07 0.062 0.59 0.89 1.16 1.778 1.71 2.688 0.02 0.032 0.05 0.061 0.07 0.094 0.54 0.902 1.06 1.829 1.56 2.75 0.02 0.032 0.04 0.06 0.06 0.093 0.5 0.921 0.96 1.844 1.41 2.781l0.06 0.126c0.45 0.929 0.88 1.868 1.28 2.812 0.02 0.051 0.04 0.105 0.06 0.156 0.4 0.936 0.78 1.895 1.13 2.844 0.02 0.053 0.04 0.104 0.06 0.156 0.35 0.949 0.67 1.885 0.97 2.844 0.02 0.072 0.04 0.147 0.06 0.219 0.3 0.941 0.56 1.894 0.82 2.843 0.02 0.074 0.04 0.146 0.06 0.219 0.08 0.31 0.14 0.627 0.22 0.938 0.17 0.72 0.35 1.432 0.5 2.156 0.07 0.342 0.12 0.688 0.18 1.031 0.12 0.617 0.25 1.225 0.35 1.844 0.15 0.893 0.26 1.791 0.37 2.688 0.02 0.145 0.05 0.291 0.07 0.437 0.01 0.093 0.02 0.188 0.03 0.281 0.01 0.094 0.02 0.187 0.03 0.282 0.1 0.952 0.19 1.912 0.25 2.872 0.06 0.94 0.11 1.9 0.12 2.85 0.01 0.1 0 0.2 0 0.31 0.02 1.05 0.01 2.1-0.03 3.15-0.03 0.94-0.08 1.86-0.15 2.79-0.01 0.12-0.02 0.25-0.04 0.37-0.07 0.92-0.16 1.84-0.28 2.75-0.12 0.96-0.27 1.93-0.43 2.88-0.02 0.08-0.02 0.16-0.04 0.25-0.02 0.12-0.03 0.25-0.06 0.37-0.16 0.91-0.36 1.82-0.56 2.72-0.03 0.13-0.06 0.27-0.09 0.41-0.21 0.88-0.45 1.77-0.69 2.65-0.17 0.59-0.35 1.17-0.53 1.75-0.18 0.57-0.34 1.13-0.53 1.69-0.3 0.86-0.61 1.71-0.94 2.56-0.06 0.16-0.13 0.32-0.19 0.47-0.04 0.11-0.08 0.23-0.12 0.34-0.36 0.88-0.73 1.73-1.13 2.6-0.38 0.82-0.77 1.63-1.19 2.44-0.08 0.15-0.16 0.31-0.25 0.46-0.41 0.8-0.83 1.6-1.28 2.38-0.09 0.17-0.18 0.34-0.28 0.5-0.2 0.34-0.42 0.66-0.62 1-0.37 0.59-0.75 1.17-1.13 1.75 0 0.01 0.01 0.02 0 0.03-0.49 0.75-1 1.49-1.53 2.22-0.46 0.64-0.95 1.25-1.44 1.87-0.19 0.26-0.36 0.53-0.56 0.79-0.13 0.16-0.27 0.33-0.41 0.5-0.16 0.2-0.33 0.39-0.5 0.59-0.55 0.67-1.13 1.32-1.72 1.97-0.6 0.67-1.23 1.35-1.87 2-0.16 0.16-0.31 0.34-0.47 0.5-21.13 21.13-52.26 24.49-77.19 11.15l0.13-0.18c-3.71-1.9-7.26-4.14-10.63-6.78-0.54-0.43-1.06-0.87-1.59-1.32-0.51-0.43-1.03-0.86-1.53-1.31-0.09-0.08-0.19-0.16-0.28-0.25-0.82-0.75-1.61-1.52-2.41-2.31-0.79-0.8-1.56-1.59-2.31-2.41-0.09-0.09-0.17-0.19-0.25-0.28-0.45-0.5-0.88-1.02-1.31-1.53-0.45-0.53-0.89-1.05-1.32-1.59-2.64-3.37-4.88-6.92-6.78-10.63l-0.19 0.13c-13.33-24.93-9.97-56.061 11.16-77.191 0.16-0.163 0.34-0.308 0.5-0.469 0.65-0.64 1.33-1.269 2-1.875 0.65-0.588 1.3-1.162 1.97-1.719 0.27-0.227 0.54-0.465 0.81-0.687 0.35-0.278 0.72-0.512 1.06-0.782 0.63-0.483 1.24-0.98 1.88-1.437 0.74-0.53 1.5-1.036 2.25-1.531 0.58-0.383 1.16-0.764 1.75-1.125 0.45-0.274 0.89-0.551 1.34-0.813 0.69-0.395 1.37-0.757 2.07-1.125 0.17-0.093 0.35-0.189 0.53-0.281 0.94-0.491 1.88-0.966 2.84-1.406 0.87-0.397 1.72-0.769 2.59-1.125 0.16-0.062 0.32-0.096 0.47-0.157 0.97-0.384 1.93-0.758 2.91-1.093 0.56-0.192 1.12-0.356 1.69-0.532 0.58-0.181 1.16-0.367 1.75-0.531 0.88-0.246 1.77-0.48 2.65-0.687 0.07-0.017 0.15-0.015 0.22-0.032 0.42-0.095 0.84-0.193 1.25-0.281 0.67-0.141 1.36-0.287 2.03-0.406 0.09-0.015 0.17-0.017 0.25-0.031 0.95-0.164 1.92-0.317 2.88-0.438 1.96-0.247 3.93-0.401 5.9-0.469 1.06-0.035 2.11-0.046 3.16-0.031z" transform="matrix(1 .068641 0 .84870 -6.6011e-8 36.913)" filter="url(#filter8661)" fill="#2d3335"/> + <path id="path3834-49-7" opacity=".5" d="m9 17.25s7.5 11 11.75 25.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 25-5.75 25 5.75 16 9.25 30 3.75 22.25 3.75 22.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-2.5-3.75-17.75-10-29.75-10-29.75 1.75-12.5 6.75-25.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-23.75-8.25-23.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" transform="matrix(1 0 0 .84657 0 37.66)" filter="url(#filter8725)" fill="url(#linearGradient8735)"/> + </g> + </g> + <g id="layer4"> + <path id="path3834-9" fill="#ceeeab" d="m9 2.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + <g id="g5438" transform="translate(0,-10)" clip-path="url(#clipPath5466)"> + <path id="path5436" fill="#a6dd8b" d="m110.75 5.5l-4.25 7c-0.75 9-2.25 13.75-8.5 16.5s-12.25 3.5-11 7.5 13 9.25 14.25 13 8.25 1.75 11 7 2 15.25-3.75 17.25-17.5 0.5-20.25 9.5-4.75 10.5-9 12.75-7.25 10.5-3.5 16.5 12.25-1.25 15-6.5 7.25-8.75 7.25-8.75h23.75l59-1.75 3.25-3.75s3.25 4 2.75 8.75-3.75 14.75 0.25 17.25 19.5-2 24-7-4.75-28.25-10.5-29.5-18.5-1.75-17-7 11.75 4.5 17.25 3.25 16.75-21 12-25.25-24.25-5.25-25.75-8 21-8 22.25-11-2.5-7.25-6.25-8.5-14 16.25-21 15.75-20 5.75-17.25 11.5-6 11-14.5 6.5-24.75-13-21.75-24 21.5-18.75 21.5-18.75l-39.25-10.25zm-13.562 107.22c-1.595 0.15-4.469 4.69-4.938 7.03-0.5 2.5-3.25 6.75-3.5 12.25s4.75 6.75 8.75 6.5 2.75-6.75 2-15c-0.25 0-0.5-10.25-2-10.75-0.094-0.03-0.206-0.04-0.312-0.03zm92.722 51.66c-6.34 0.29-6.63 7.46-7.41 8.87-1.25 2.25 2.25 13.75 2 18s-4.75 5.25-9.5 9.75 0.5 16 11.25 31l44.75 1.25-1-35s4.75-4.25-20.75-24.25c-9.56-7.5-15.54-9.8-19.34-9.62zm-149.97 16.53c-4.03-0.11-8.282 5.71-9.688 7.59-1.5 2-6.25 5-17 9.5l-14.5 34.25 53 4.25s1.75-11-4.25-15.75-17.25-5.75-18.25-13.25 9.25-10 13.75-14.25 2-11.25-2.25-12.25c-0.266-0.06-0.544-0.09-0.812-0.09z"/> + </g> + <path id="path5280" fill="#aac3e7" d="m158.53 75.344c-4.76-0.015-9.03 0.968-11.53 3.156-8 7-35 0.75-48.5 7s-13.25 38-14.75 44.5-17.5 20.75-20 23.5-13.25 7.25-19.5 8.5-12.75 7.25-15.5 11c-2.021 2.76-7.406 6.45-10.125 8.22-0.046 0.18-0.079 0.35-0.125 0.53-0.134 0.53-0.247 1.08-0.375 1.63 4.98-1.61 11.18-8.18 16.625-13.63 6.25-6.25 20-7.75 27.75-11.5s14.25-19.75 26.5-23.75 21.25 11.75 24.25 18.5 1.75 12.75 3.75 17 11 11.75 11.5 13.5-5 6.5-6.25 8.5-10.5 7-11.75 8.75c-0.97 1.35-1.92 6.77-2.31 9.22 0.41-0.17 0.75-0.31 1.12-0.47 0.49-2.53 1.52-7.08 2.94-8.5 2-2 11.25-4.5 12.5-8.5s7-6.5 7-6.5 2.75 4 16 14c8.83 6.67 12.76 15.53 14.41 20.72 0.67 0.17 1.53 0.41 2.03 0.53-1.22-4.32-4.84-16.24-8.94-20.75-5-5.5-18.5-10.75-22.75-22s-24.5-34.25-17.5-40.25 16.5-4 28.5 7.5 46.25 5.75 57.75 3.75c9.95-1.73 20.83 14.88 23.91 26.03 0.59-2.09 1.12-4 1.65-5.75-1.74-1.92-3.69-4.62-5.31-8.28-3.75-8.5-12-13.25-12-13.25s8.75-5 14.75-7.75c1.62-0.74 3.01-1.68 4.19-2.66-0.16-0.77-0.26-1.25-0.44-2.09-0.03-0.15-0.06-0.29-0.09-0.44-4.77 5.56-19.24 9.62-21.66 10.94-2.75 1.5-18.25 3-35.75 4.5s-26.75-7.5-34.25-14.75-13-36-3-38 20 13.75 30 17 21.5-15.75 19.75-27c-1.2-7.734-14-12.625-24.47-12.656zm-53.34 13.281c1.27 0.001 5.86 1.594 6.56 2.375 2.25 2.5 2 7.25 0 8s-12.75 8-10.5 14.25 1.75 18-3.5 18-8 0-10-2.5-2-12 0-19.75 3.5-15 8-18.25c3.094-2.234 6.63-2.128 9.44-2.125zm13.59 73.095c0.2 0.01 1.91 3.51 4.72 7.03 3 3.75 3.25 8.25 3.25 8.25s-4.25-4.75-6-8-2-7.25-2-7.25c0-0.03 0.02-0.03 0.03-0.03z"/> + <path id="path5319" opacity=".38696" stroke-linejoin="round" d="m122.75 62.25c6.25 0.5 12.25-2.25 10.75-6.5s-12.5-7.25-13.25-3 2 10.5 2.5 9.5z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <path id="path5321" opacity=".38696" stroke-linejoin="round" d="m108.75 46.75c-8.5-5.5-8.5-7.25-7-8s10.25 5 12.75 8-2.25 2-5.75 0z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <g id="g5373" clip-path="url(#clipPath5383)" transform="translate(0,-10)" stroke="#6d7f42" fill="none"> + <path id="path5323" opacity=".38696" stroke-linejoin="round" d="m15.75 151.25c33-2.5 38.25-3.5 36.25-10.25s-8.75-23.5-23-22.5-22.75-6.75-22.75-6.75" stroke-linecap="round"/> + <path id="path5311" opacity=".38696" d="m17.5 177.25c18.25-10 28.75-8.5 35-11.5s13.25-5.75 15.75-9.5 5.75-11.5 5.75-18-3.5-36 3.25-43.5 17.25-26 26-23.25 12.25 9.75 22 9.5 21.75-4 24.25-12.25-15.75-16-16-23 5.5-14.25 20.25-17 23.5-11.5 23.5-11.5"/> + <path id="path5313" opacity=".38696" stroke-linejoin="round" d="m14.5 161c15.25-1.5 22.25 3.5 31.5 1.75s13.25-3 17.75-5.75 6-3.75 6.25-6.5 1-12.5-3-22-12.5-31.5-8.25-38.75 5.25-21.5 15.75-24.5 21-6.25 27.75-1.25 12.75 14.25 20 14.5 11.75-1.5 14.5-4.5 4.5-10.25 1.75-13.75-15.5-5.5-17.25-9.5-10.75-17-0.25-26.75 36.25-8.25 36.25-8.25" stroke-linecap="round"/> + <path id="path5315" opacity=".38696" stroke-linejoin="round" d="m21.25 159c13.75 1 21.5 4.25 33.5-0.5s13.5-5.25 13.75-8.75-0.25-15.75-3-20-13-13.75-15.75-24.25 0.25-41 8.5-48.25 32-7.25 37.5-10.5 5.25-16.75 13-24.5 27-12.25 27-12.25" stroke-linecap="round"/> + <path id="path5317" opacity=".38696" stroke-linejoin="round" d="m190 18.5c11.75 5 39 9.75 47.25 40.25" stroke-linecap="round"/> + <path id="path5325" opacity=".38696" stroke-linejoin="round" d="m9.75 214c19-12.5 36-1.25 49-4s38.25-37.25 46-37 5.5-11.75 8.5-13.25 5.5 6 11.75 8 24.5-2.75 23.5-5.75-7-7.75-5.5-8.5 8.5 5 12.75 3.5 43.75-1 48.5-13.5 21.5-13.5 21.5-13.5" stroke-linecap="round"/> + <path id="path5327" opacity=".38696" stroke-linejoin="round" d="m77.5 233.5c13.5-11.5 23.25-25 28.5-27s12.75-3.75 15.75-8 2.5-10.75 5.25-12 3.75 5.75 8.75 6 36.75-5 42.75-11.75 32.25-12.5 32.5-14.5-1-4.75 0.25-5.5 24.75-6 24.75-6" stroke-linecap="round"/> + <path id="path5329" opacity=".38696" stroke-linejoin="round" d="m168.75 236c9-13.75 20.5-41 29.5-42s10.25-2.5 12.5-4.25 17 2.25 17 2.25" stroke-linecap="round"/> + </g> + <g id="g5400" clip-path="url(#clipPath5426)" transform="translate(0,-10)" stroke="#d38484" stroke-linecap="round" stroke-width="2" fill="none"> + <path id="path5387" d="m57.75 20l-8.5 28.25 18 6.25 7.75 36.25-21 22.25 9 10.5-12 11.5 0.5 4.5 20.25 24.5 14-6.75 20.5 18.5-10.5 28.25 10.25 8.5-2.75 13"/> + <path id="path5389" d="m105.75 212.25l12.5-27.75 11-7 27.5 15.75 20.5-3.75-0.25-15.75-10.25-6 12.75-26.25 5.75-3.75 38.75-10"/> + </g> + </g> + <g id="layer1" transform="translate(0,192)"> + <g id="g4199" opacity=".50435" transform="translate(0,320)"> + <path id="path3834-4" d="m219.25 10s-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75c0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.125 48.971-4 52.25 12.031c10.38-4.418 52.11-4.9 55.31-13.156 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z" transform="translate(0,-192)" fill="#b1e479"/> + <path id="path3834-7-2" d="m27 65.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.969 16.37 53.721-15.74 52.25 17.53c16.36-4.26 32.39-9.12 48.06-15.41 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75c-3.2 8.256-44.93 8.738-55.31 13.156l-52.25-12.031-47.971 4-52.469-5.125z" transform="translate(0,-192)" fill="#87d531"/> + <path id="path3834-7-26" d="m231.75 165.5c-17.9 7.67-35.94 14.9-54.31 21.41l-52.25-18.53-50.221 9-48.969-9.88s-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z" transform="translate(0,-192)" fill="#ceeeab"/> + <path id="path3834-7-26-0" d="m13 113.25s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.88 50.221-9 52.25 18.53c18.37-6.51 36.41-13.74 54.31-21.41 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75c-15.67 6.29-31.7 11.15-48.06 15.41l-52.25-17.53-53.721 15.74-50.969-16.37z" transform="translate(0,-192)" fill="#b9e787"/> + </g> + <g id="g4205" opacity=".52174" transform="translate(0,140)"> + <path id="path3834-2" d="m13.719 0.03125c-2.729-0.007-4.4378 0.125-4.719 0.21875 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6l1.5-53.25-12.25-46.5 16-59.75c-2.22-15.48-9.068-30.046-14.25-44.75 0 0-18.5-9-31.5-11.5-8.125-1.5625-15.483-1.9565-20.031-1.9688z" fill="#83d32b"/> + <path id="path3834-6-2" d="m114.75-0.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.704 12.03 29.27 14.25 44.75l-16 59.75 12.25 46.5-1.5 53.25s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.25-48.5-8.25-54.25 11.75-45c-3.44-9.727-8.06-56.93-14.5-57.5z" fill="#b1e479"/> + <path id="path3834-6-6" d="m219.25-2s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.358 11.44 45.392 14.25 52.25l-11.25 53.25 9.5 55-12.75 45.5s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75z" fill="#a4df62"/> + <path id="path3834-6-6-9" d="m114.75-0.25c6.44 0.57024 11.06 47.773 14.5 57.5l-11.75 45 8.25 53.25-11.25 49.5s5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5l12.75-45.5-9.5-55 11.25-53.25c-2.81-6.858-9.33-53.608-14.25-52.25 0 0-9.75-4.25-22-8.5s-29.75-5.5-29.75-5.5z" fill="#ceeeab"/> + </g> + <path id="path3834-49" opacity=".039130" d="m9-189.75s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" fill="url(#linearGradient5168)"/> + </g> + <g id="layer3"> + <g id="g4808" opacity=".26957" transform="translate(0,182)"> + <path id="path3834-4-9" fill="url(#linearGradient4806-9)" d="m219.25-182s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.36 11.44 45.39 14.25 52.25l-0.06 0.28c11.81-4.07 51.21-4.77 54.31-12.78 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z"/> + <path id="path3834-7-2-4-9" fill="url(#linearGradient4790-3)" d="m27-126.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.625 16.281 15.781-58.911-52.406-5.12z"/> + <path id="path3834-7-26-9-7" fill="url(#linearGradient4758-2)" d="m26-24.5s-4 10.25-7.5 24.25-5 30.75-5 30.75 0.147-0.045 0.438-0.094c2.033-0.338 11.218-1.5 28.062 1.344 19.25 3.25 32.25 6 32.25 6l1.469-52.5-0.75 0.125-48.969-9.875z"/> + <path id="path3834-4-9-6" fill="url(#linearGradient4750-9)" d="m114.75-180.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.7 12.03 29.27 14.25 44.75l-0.094 0.31 48.034-3.94 1.12 0.26c-3.36-13.33-7.79-54.6-13.81-55.13z"/> + <path id="path3834-7-26-0-0-9" fill="url(#linearGradient4782-5)" d="m117.59-78.094l-53.621 15.719-0.344-0.094-0.125 0.469 12.25 46.5-0.031 0.75 49.471-8.875 0.53 0.187 0.03-0.062-8.25-54.25 0.09-0.344z"/> + <path id="path3834-7-2-4-3" fill="url(#linearGradient4798-4)" d="m128.56-125.12c0.24 0.92 0.47 1.74 0.69 2.37l-11.66 44.656 0.1-0.031 51.81 17.375 11.19-52.97c-0.36 0.12-0.7 0.25-1 0.38l-51.13-11.78z"/> + <path id="path3834-7-26-9-85" fill="url(#linearGradient4766-3)" d="m125.53-23.5l-11.03 48.5s5.5 0.5 22.5 6.25c2.12 0.719 4.16 1.406 6.12 2.031 1.97 0.626 3.86 1.186 5.63 1.719 10.62 3.199 17.5 4.75 17.5 4.75l12.72-45.406c-0.51 0.1824-1.02 0.3808-1.53 0.5622l-51.91-18.406z"/> + <path id="path3834-7-26-0-0-3" fill="url(#linearGradient4965)" d="m218-76c-15.67 6.288-31.7 11.15-48.06 15.406l-0.44-0.156 9.5 55-0.03 0.0937c17.84-6.3597 35.38-13.387 52.78-20.844 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75z"/> + </g> + <g id="g4818" opacity=".043478" transform="translate(0,182)"> + <path id="path3834-4-9-1" fill="url(#linearGradient4686-3)" d="m13.719-179.97c-1.106 0-1.972 0.03-2.719 0.06-0.445 0.02-0.855 0.04-1.1562 0.07-0.0293 0-0.066-0.01-0.0938 0-0.3979 0.03-0.6562 0.06-0.75 0.09 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.12 0.937-0.06 0.094-0.31c-2.22-15.48-9.068-30.05-14.25-44.75 0 0-18.5-9-31.5-11.5-1.018-0.2-2.01-0.37-3-0.53-0.596-0.1-1.167-0.2-1.75-0.28-0.237-0.04-0.453-0.06-0.688-0.1-1.306-0.18-2.588-0.34-3.812-0.46-0.735-0.08-1.395-0.13-2.094-0.19-0.685-0.06-1.353-0.11-2-0.16-0.992-0.07-1.89-0.12-2.781-0.15-1.456-0.07-2.769-0.1-3.906-0.1z"/> + <path id="path3834-7-26-0-0-7" fill="url(#linearGradient4742-3)" d="m13-78.75s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.875 0.75-0.125 0.031-0.75-12.25-46.5 0.125-0.469-50.625-16.281z"/> + <path id="path3834-7-2-4-6" fill="url(#linearGradient4734-3)" d="m127.44-125.38l-47.971 4h-0.063l-15.781 58.911 0.344 0.094 53.621-15.719 11.66-44.656c-0.22-0.63-0.45-1.45-0.69-2.37l-1.12-0.26z"/> + <path id="path3834-7-26-9-8" fill="url(#linearGradient4726-9)" d="m125.19-23.625l-49.471 8.875-1.469 52.5s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.22-48.438-0.53-0.187z"/> + <path id="path3834-4-9-2" fill="url(#linearGradient4710-2)" d="m114.75-180.25c6.02 0.53 10.45 41.8 13.81 55.13l51.13 11.78c0.3-0.13 0.64-0.26 1-0.38l0.06-0.28c-2.81-6.86-9.33-53.61-14.25-52.25 0 0-0.61-0.25-1.72-0.72-3.32-1.39-11.09-4.59-20.28-7.78-12.25-4.25-29.75-5.5-29.75-5.5z"/> + <path id="path3834-7-26-0-0-0" fill="url(#linearGradient4718-4)" d="m117.69-78.125l-0.1 0.031-0.09 0.344 8.25 53.25-0.22 1 51.91 18.406c0.51-0.1813 1.02-0.3797 1.53-0.5623l0.03-0.0937-9.5-55-51.81-17.375z"/> + <path id="path3834-7-26-9-9" fill="url(#linearGradient4694-4)" d="m231.75-26.5c-17.4 7.457-34.94 14.484-52.78 20.844l-12.72 45.406s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z"/> + <path id="path3834-7-2-4-5" fill="url(#linearGradient4702-4)" d="m235-126.5c-3.1 8.01-42.5 8.71-54.31 12.78l-11.19 52.97 0.44 0.156c16.36-4.256 32.39-9.118 48.06-15.406 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75z"/> + </g> + </g> + <g id="layer7"> + <g id="g8102" clip-path="url(#clipPath8617)" transform="matrix(1.2525 .035398 0 1.2525 -27.809 -48.344)"> + <path id="path3834-9-1" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + <g id="g5438-0" clip-path="url(#clipPath5466-2-3)"> + <path id="path5436-7" fill="#a6dd8b" d="m110.75 5.5l-4.25 7c-0.75 9-2.25 13.75-8.5 16.5s-12.25 3.5-11 7.5 13 9.25 14.25 13 8.25 1.75 11 7 2 15.25-3.75 17.25-17.5 0.5-20.25 9.5-4.75 10.5-9 12.75-7.25 10.5-3.5 16.5 12.25-1.25 15-6.5 7.25-8.75 7.25-8.75h23.75l59-1.75 3.25-3.75s3.25 4 2.75 8.75-3.75 14.75 0.25 17.25 19.5-2 24-7-4.75-28.25-10.5-29.5-18.5-1.75-17-7 11.75 4.5 17.25 3.25 16.75-21 12-25.25-24.25-5.25-25.75-8 21-8 22.25-11-2.5-7.25-6.25-8.5-14 16.25-21 15.75-20 5.75-17.25 11.5-6 11-14.5 6.5-24.75-13-21.75-24 21.5-18.75 21.5-18.75l-39.25-10.25zm-13.562 107.22c-1.595 0.15-4.469 4.69-4.938 7.03-0.5 2.5-3.25 6.75-3.5 12.25s4.75 6.75 8.75 6.5 2.75-6.75 2-15c-0.25 0-0.5-10.25-2-10.75-0.094-0.03-0.206-0.04-0.312-0.03zm92.722 51.66c-6.34 0.29-6.63 7.46-7.41 8.87-1.25 2.25 2.25 13.75 2 18s-4.75 5.25-9.5 9.75 0.5 16 11.25 31l44.75 1.25-1-35s4.75-4.25-20.75-24.25c-9.56-7.5-15.54-9.8-19.34-9.62zm-149.97 16.53c-4.03-0.11-8.282 5.71-9.688 7.59-1.5 2-6.25 5-17 9.5l-14.5 34.25 53 4.25s1.75-11-4.25-15.75-17.25-5.75-18.25-13.25 9.25-10 13.75-14.25 2-11.25-2.25-12.25c-0.266-0.06-0.544-0.09-0.812-0.09z"/> + </g> + <path id="path5280-4" fill="#aac3e7" d="m158.53 85.344c-4.76-0.015-9.03 0.968-11.53 3.156-8 7-35 0.75-48.5 7s-13.25 38-14.75 44.5-17.5 20.75-20 23.5-13.25 7.25-19.5 8.5-12.75 7.25-15.5 11c-2.021 2.76-7.406 6.45-10.125 8.22-0.046 0.18-0.079 0.35-0.125 0.53-0.134 0.53-0.247 1.08-0.375 1.63 4.98-1.61 11.18-8.18 16.625-13.63 6.25-6.25 20-7.75 27.75-11.5s14.25-19.75 26.5-23.75 21.25 11.75 24.25 18.5 1.75 12.75 3.75 17 11 11.75 11.5 13.5-5 6.5-6.25 8.5-10.5 7-11.75 8.75c-0.97 1.35-1.92 6.77-2.31 9.22 0.41-0.17 0.75-0.31 1.12-0.47 0.49-2.53 1.52-7.08 2.94-8.5 2-2 11.25-4.5 12.5-8.5s7-6.5 7-6.5 2.75 4 16 14c8.83 6.67 12.76 15.53 14.41 20.72 0.67 0.17 1.53 0.41 2.03 0.53-1.22-4.32-4.84-16.24-8.94-20.75-5-5.5-18.5-10.75-22.75-22s-24.5-34.25-17.5-40.25 16.5-4 28.5 7.5 46.25 5.75 57.75 3.75c9.95-1.73 20.83 14.88 23.91 26.03 0.59-2.09 1.12-4 1.65-5.75-1.74-1.92-3.69-4.62-5.31-8.28-3.75-8.5-12-13.25-12-13.25s8.75-5 14.75-7.75c1.62-0.74 3.01-1.68 4.19-2.66-0.16-0.77-0.26-1.25-0.44-2.09-0.03-0.15-0.06-0.29-0.09-0.44-4.77 5.56-19.24 9.62-21.66 10.94-2.75 1.5-18.25 3-35.75 4.5s-26.75-7.5-34.25-14.75-13-36-3-38 20 13.75 30 17 21.5-15.75 19.75-27c-1.2-7.734-14-12.625-24.47-12.656zm-53.34 13.281c1.27 0.001 5.86 1.595 6.56 2.375 2.25 2.5 2 7.25 0 8s-12.75 8-10.5 14.25 1.75 18-3.5 18-8 0-10-2.5-2-12 0-19.75 3.5-15 8-18.25c3.094-2.234 6.63-2.128 9.44-2.125zm13.59 73.095c0.2 0.01 1.91 3.51 4.72 7.03 3 3.75 3.25 8.25 3.25 8.25s-4.25-4.75-6-8-2-7.25-2-7.25c0-0.03 0.02-0.03 0.03-0.03z"/> + <path id="path5319-8" opacity=".38696" stroke-linejoin="round" d="m122.75 72.25c6.25 0.5 12.25-2.25 10.75-6.5s-12.5-7.25-13.25-3 2 10.5 2.5 9.5z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <path id="path5321-0" opacity=".38696" stroke-linejoin="round" d="m108.75 56.75c-8.5-5.5-8.5-7.25-7-8s10.25 5 12.75 8-2.25 2-5.75 0z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <g id="g5373-1" stroke="#6d7f42" fill="none" clip-path="url(#clipPath5383-0-0)"> + <path id="path5323-8" opacity=".38696" stroke-linejoin="round" d="m15.75 151.25c33-2.5 38.25-3.5 36.25-10.25s-8.75-23.5-23-22.5-22.75-6.75-22.75-6.75" stroke-linecap="round"/> + <path id="path5311-7" opacity=".38696" d="m17.5 177.25c18.25-10 28.75-8.5 35-11.5s13.25-5.75 15.75-9.5 5.75-11.5 5.75-18-3.5-36 3.25-43.5 17.25-26 26-23.25 12.25 9.75 22 9.5 21.75-4 24.25-12.25-15.75-16-16-23 5.5-14.25 20.25-17 23.5-11.5 23.5-11.5"/> + <path id="path5313-3" opacity=".38696" stroke-linejoin="round" d="m14.5 161c15.25-1.5 22.25 3.5 31.5 1.75s13.25-3 17.75-5.75 6-3.75 6.25-6.5 1-12.5-3-22-12.5-31.5-8.25-38.75 5.25-21.5 15.75-24.5 21-6.25 27.75-1.25 12.75 14.25 20 14.5 11.75-1.5 14.5-4.5 4.5-10.25 1.75-13.75-15.5-5.5-17.25-9.5-10.75-17-0.25-26.75 36.25-8.25 36.25-8.25" stroke-linecap="round"/> + <path id="path5315-4" opacity=".38696" stroke-linejoin="round" d="m21.25 159c13.75 1 21.5 4.25 33.5-0.5s13.5-5.25 13.75-8.75-0.25-15.75-3-20-13-13.75-15.75-24.25 0.25-41 8.5-48.25 32-7.25 37.5-10.5 5.25-16.75 13-24.5 27-12.25 27-12.25" stroke-linecap="round"/> + <path id="path5317-7" opacity=".38696" stroke-linejoin="round" d="m190 18.5c11.75 5 39 9.75 47.25 40.25" stroke-linecap="round"/> + <path id="path5325-1" opacity=".38696" stroke-linejoin="round" d="m9.75 214c19-12.5 36-1.25 49-4s38.25-37.25 46-37 5.5-11.75 8.5-13.25 5.5 6 11.75 8 24.5-2.75 23.5-5.75-7-7.75-5.5-8.5 8.5 5 12.75 3.5 43.75-1 48.5-13.5 21.5-13.5 21.5-13.5" stroke-linecap="round"/> + <path id="path5327-3" opacity=".38696" stroke-linejoin="round" d="m77.5 233.5c13.5-11.5 23.25-25 28.5-27s12.75-3.75 15.75-8 2.5-10.75 5.25-12 3.75 5.75 8.75 6 36.75-5 42.75-11.75 32.25-12.5 32.5-14.5-1-4.75 0.25-5.5 24.75-6 24.75-6" stroke-linecap="round"/> + <path id="path5329-4" opacity=".38696" stroke-linejoin="round" d="m168.75 236c9-13.75 20.5-41 29.5-42s10.25-2.5 12.5-4.25 17 2.25 17 2.25" stroke-linecap="round"/> + </g> + <g id="g5400-4" clip-path="url(#clipPath5426-1-6)" stroke="#d38484" stroke-linecap="round" stroke-width="2" fill="none"> + <path id="path5387-2" d="m57.75 20l-8.5 28.25 18 6.25 7.75 36.25-21 22.25 9 10.5-12 11.5 0.5 4.5 20.25 24.5 14-6.75 20.5 18.5-10.5 28.25 10.25 8.5-2.75 13"/> + <path id="path5389-4" d="m105.75 212.25l12.5-27.75 11-7 27.5 15.75 20.5-3.75-0.25-15.75-10.25-6 12.75-26.25 5.75-3.75 38.75-10"/> + </g> + <path id="path3834-49-6" opacity=".039130" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" fill="url(#linearGradient5168-2-9)"/> + <g id="g4808-4" opacity=".26957" transform="translate(0,192)"> + <path id="path3834-4-9-9" fill="url(#linearGradient4806-9)" d="m219.25-182s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.36 11.44 45.39 14.25 52.25l-0.06 0.28c11.81-4.07 51.21-4.77 54.31-12.78 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z"/> + <path id="path3834-7-2-4-9-8" fill="url(#linearGradient4790-3)" d="m27-126.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.625 16.281 15.781-58.911-52.406-5.12z"/> + <path id="path3834-7-26-9-7-4" fill="url(#linearGradient4758-2)" d="m26-24.5s-4 10.25-7.5 24.25-5 30.75-5 30.75 0.147-0.045 0.438-0.094c2.033-0.338 11.218-1.5 28.062 1.344 19.25 3.25 32.25 6 32.25 6l1.469-52.5-0.75 0.125-48.969-9.875z"/> + <path id="path3834-4-9-6-2" fill="url(#linearGradient4750-9)" d="m114.75-180.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.7 12.03 29.27 14.25 44.75l-0.094 0.31 48.034-3.94 1.12 0.26c-3.36-13.33-7.79-54.6-13.81-55.13z"/> + <path id="path3834-7-26-0-0-9-5" fill="url(#linearGradient4782-5)" d="m117.59-78.094l-53.621 15.719-0.344-0.094-0.125 0.469 12.25 46.5-0.031 0.75 49.471-8.875 0.53 0.187 0.03-0.062-8.25-54.25 0.09-0.344z"/> + <path id="path3834-7-2-4-3-7" fill="url(#linearGradient4798-4)" d="m128.56-125.12c0.24 0.92 0.47 1.74 0.69 2.37l-11.66 44.656 0.1-0.031 51.81 17.375 11.19-52.97c-0.36 0.12-0.7 0.25-1 0.38l-51.13-11.78z"/> + <path id="path3834-7-26-9-85-2" fill="url(#linearGradient4766-3)" d="m125.53-23.5l-11.03 48.5s5.5 0.5 22.5 6.25c2.12 0.719 4.16 1.406 6.12 2.031 1.97 0.626 3.86 1.186 5.63 1.719 10.62 3.199 17.5 4.75 17.5 4.75l12.72-45.406c-0.51 0.1824-1.02 0.3808-1.53 0.5622l-51.91-18.406z"/> + <path id="path3834-7-26-0-0-3-7" fill="url(#linearGradient4965)" d="m218-76c-15.67 6.288-31.7 11.15-48.06 15.406l-0.44-0.156 9.5 55-0.03 0.0937c17.84-6.3597 35.38-13.387 52.78-20.844 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75z"/> + </g> + <g id="g4818-4" opacity=".043478" transform="translate(0,192)"> + <path id="path3834-4-9-1-4" fill="url(#linearGradient4686-3)" d="m13.719-179.97c-1.106 0-1.972 0.03-2.719 0.06-0.445 0.02-0.855 0.04-1.1562 0.07-0.0293 0-0.066-0.01-0.0938 0-0.3979 0.03-0.6562 0.06-0.75 0.09 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.12 0.937-0.06 0.094-0.31c-2.22-15.48-9.068-30.05-14.25-44.75 0 0-18.5-9-31.5-11.5-1.018-0.2-2.01-0.37-3-0.53-0.596-0.1-1.167-0.2-1.75-0.28-0.237-0.04-0.453-0.06-0.688-0.1-1.306-0.18-2.588-0.34-3.812-0.46-0.735-0.08-1.395-0.13-2.094-0.19-0.685-0.06-1.353-0.11-2-0.16-0.992-0.07-1.89-0.12-2.781-0.15-1.456-0.07-2.769-0.1-3.906-0.1z"/> + <path id="path3834-7-26-0-0-7-0" fill="url(#linearGradient4742-3)" d="m13-78.75s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.875 0.75-0.125 0.031-0.75-12.25-46.5 0.125-0.469-50.625-16.281z"/> + <path id="path3834-7-2-4-6-5" fill="url(#linearGradient4734-3)" d="m127.44-125.38l-47.971 4h-0.063l-15.781 58.911 0.344 0.094 53.621-15.719 11.66-44.656c-0.22-0.63-0.45-1.45-0.69-2.37l-1.12-0.26z"/> + <path id="path3834-7-26-9-8-6" fill="url(#linearGradient4726-9)" d="m125.19-23.625l-49.471 8.875-1.469 52.5s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.22-48.438-0.53-0.187z"/> + <path id="path3834-4-9-2-0" fill="url(#linearGradient4710-2)" d="m114.75-180.25c6.02 0.53 10.45 41.8 13.81 55.13l51.13 11.78c0.3-0.13 0.64-0.26 1-0.38l0.06-0.28c-2.81-6.86-9.33-53.61-14.25-52.25 0 0-0.61-0.25-1.72-0.72-3.32-1.39-11.09-4.59-20.28-7.78-12.25-4.25-29.75-5.5-29.75-5.5z"/> + <path id="path3834-7-26-0-0-0-0" fill="url(#linearGradient4718-4)" d="m117.69-78.125l-0.1 0.031-0.09 0.344 8.25 53.25-0.22 1 51.91 18.406c0.51-0.1813 1.02-0.3797 1.53-0.5623l0.03-0.0937-9.5-55-51.81-17.375z"/> + <path id="path3834-7-26-9-9-4" fill="url(#linearGradient4694-4)" d="m231.75-26.5c-17.4 7.457-34.94 14.484-52.78 20.844l-12.72 45.406s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z"/> + <path id="path3834-7-2-4-5-0" fill="url(#linearGradient4702-4)" d="m235-126.5c-3.1 8.01-42.5 8.71-54.31 12.78l-11.19 52.97 0.44 0.156c16.36-4.256 32.39-9.118 48.06-15.406 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75z"/> + </g> + </g> + </g> + <g id="layer6"> + <path id="path5604-26-0" d="m174.28 35.875c-17.6 0-35.19 6.639-48.72 19.906-0.16 0.164-0.33 0.303-0.5 0.469-22.05 22.056-26.206 55.25-12.47 81.5l-2.28 1.63c2.25 4.23 4.94 8.3 8.1 12.12l-13.32 13.34c-1.34-0.58-2.78-1.03-4.56-1.37l-2.842 2.84c-1.11-0.48-2.139-0.81-3.063-0.87l-64.125 64.12c-0.037 1.1 0.226 2.19 0.656 3.28l-0.531 0.54-1.094 1.09c0.716 3.74 2.011 6.82 5.469 10.28s6.42 4.63 10.281 5.47l1.094-1.1 0.719-0.71c1.088 0.46 2.13 0.78 3.094 0.84l64.122-64.13c-0.24-0.97-0.62-1.93-1.03-2.9l3-3c-0.25-1.73-0.68-3.2-1.31-4.6l13.28-13.28c3.82 3.16 7.89 5.85 12.13 8.1l1.62-2.28c26.25 13.74 59.44 9.58 81.5-12.47 0.17-0.17 0.31-0.34 0.47-0.5 26.69-27.22 26.55-70.923-0.47-97.94-13.59-13.59-31.41-20.375-49.22-20.375zm-0.5 3.281c0.11 0.002 0.21-0.002 0.31 0 0.95 0.019 1.9 0.066 2.85 0.125 0.96 0.061 1.92 0.148 2.87 0.25 0.1 0.01 0.19 0.021 0.28 0.031 0.1 0.011 0.19 0.021 0.29 0.032 0.14 0.017 0.29 0.044 0.43 0.062 0.9 0.11 1.8 0.228 2.69 0.375 0.62 0.102 1.23 0.224 1.84 0.344 0.35 0.066 0.69 0.116 1.04 0.187 0.72 0.153 1.43 0.324 2.15 0.5 0.31 0.077 0.63 0.138 0.94 0.219 0.07 0.019 0.14 0.043 0.22 0.063 0.95 0.253 1.89 0.516 2.84 0.812 0.07 0.023 0.15 0.04 0.22 0.063 0.95 0.3 1.91 0.625 2.84 0.969 0.06 0.019 0.11 0.042 0.16 0.062 0.95 0.352 1.9 0.728 2.84 1.125 0.06 0.022 0.11 0.041 0.16 0.063 0.94 0.4 1.88 0.836 2.81 1.281 0.04 0.02 0.09 0.042 0.13 0.062 0.93 0.451 1.86 0.91 2.78 1.407 0.03 0.017 0.06 0.044 0.09 0.062 0.93 0.503 1.84 1.013 2.75 1.562 0.03 0.02 0.06 0.044 0.1 0.063 0.9 0.551 1.8 1.122 2.68 1.719 0.55 0.369 1.09 0.769 1.63 1.156 0.36 0.261 0.73 0.512 1.09 0.781 0.02 0.014 0.05 0.018 0.06 0.031 0.88 0.656 1.75 1.36 2.6 2.063 1.74 1.434 3.43 2.963 5.06 4.594 1.62 1.62 3.14 3.3 4.56 5.031 0.01 0.011 0.03 0.02 0.03 0.031 0.71 0.855 1.41 1.715 2.07 2.594 0.28 0.379 0.54 0.773 0.81 1.156 0.37 0.517 0.74 1.038 1.09 1.563 0.02 0.024 0.05 0.038 0.07 0.062 0.59 0.89 1.16 1.778 1.71 2.688 0.02 0.032 0.05 0.061 0.07 0.094 0.54 0.902 1.06 1.829 1.56 2.75 0.02 0.032 0.04 0.06 0.06 0.093 0.5 0.921 0.96 1.844 1.41 2.781l0.06 0.126c0.45 0.929 0.88 1.868 1.28 2.812 0.02 0.051 0.04 0.105 0.06 0.156 0.4 0.936 0.78 1.895 1.13 2.844 0.02 0.053 0.04 0.104 0.06 0.156 0.35 0.949 0.67 1.885 0.97 2.844 0.02 0.072 0.04 0.147 0.06 0.219 0.3 0.941 0.56 1.894 0.82 2.843 0.02 0.074 0.04 0.146 0.06 0.219 0.08 0.31 0.14 0.627 0.22 0.938 0.17 0.72 0.35 1.432 0.5 2.156 0.07 0.342 0.12 0.688 0.18 1.031 0.12 0.617 0.25 1.225 0.35 1.844 0.15 0.893 0.26 1.791 0.37 2.688 0.02 0.145 0.05 0.291 0.07 0.437 0.01 0.093 0.02 0.188 0.03 0.281 0.01 0.094 0.02 0.187 0.03 0.282 0.1 0.952 0.19 1.912 0.25 2.872 0.06 0.94 0.11 1.9 0.12 2.85 0.01 0.1 0 0.2 0 0.31 0.02 1.05 0.01 2.1-0.03 3.15-0.03 0.94-0.08 1.86-0.15 2.79-0.01 0.12-0.02 0.25-0.04 0.37-0.07 0.92-0.16 1.84-0.28 2.75-0.12 0.96-0.27 1.93-0.43 2.88-0.02 0.08-0.02 0.16-0.04 0.25-0.02 0.12-0.03 0.25-0.06 0.37-0.16 0.91-0.36 1.82-0.56 2.72-0.03 0.13-0.06 0.27-0.09 0.41-0.21 0.88-0.45 1.77-0.69 2.65-0.17 0.59-0.35 1.17-0.53 1.75-0.18 0.57-0.34 1.13-0.53 1.69-0.3 0.86-0.61 1.71-0.94 2.56-0.06 0.16-0.13 0.32-0.19 0.47-0.04 0.11-0.08 0.23-0.12 0.34-0.36 0.88-0.73 1.73-1.13 2.6-0.38 0.82-0.77 1.63-1.19 2.44-0.08 0.15-0.16 0.31-0.25 0.46-0.41 0.8-0.83 1.6-1.28 2.38-0.09 0.17-0.18 0.34-0.28 0.5-0.2 0.34-0.42 0.66-0.62 1-0.37 0.59-0.75 1.17-1.13 1.75 0 0.01 0.01 0.02 0 0.03-0.49 0.75-1 1.49-1.53 2.22-0.46 0.64-0.95 1.25-1.44 1.87-0.19 0.26-0.36 0.53-0.56 0.79-0.13 0.16-0.27 0.33-0.41 0.5-0.16 0.2-0.33 0.39-0.5 0.59-0.55 0.67-1.13 1.32-1.72 1.97-0.6 0.67-1.23 1.35-1.87 2-0.16 0.16-0.31 0.34-0.47 0.5-21.13 21.13-52.26 24.49-77.19 11.15l0.13-0.18c-3.71-1.9-7.26-4.14-10.63-6.78-0.54-0.43-1.06-0.87-1.59-1.32-0.51-0.43-1.03-0.86-1.53-1.31-0.09-0.08-0.19-0.16-0.28-0.25-0.82-0.75-1.61-1.52-2.41-2.31-0.79-0.8-1.56-1.59-2.31-2.41-0.09-0.09-0.17-0.19-0.25-0.28-0.45-0.5-0.88-1.02-1.31-1.53-0.45-0.53-0.89-1.05-1.32-1.59-2.64-3.37-4.88-6.92-6.78-10.63l-0.19 0.13c-13.33-24.93-9.97-56.061 11.16-77.191 0.16-0.163 0.34-0.308 0.5-0.469 0.65-0.64 1.33-1.269 2-1.875 0.65-0.588 1.3-1.162 1.97-1.719 0.27-0.227 0.54-0.465 0.81-0.687 0.35-0.278 0.72-0.512 1.06-0.782 0.63-0.483 1.24-0.98 1.88-1.437 0.74-0.53 1.5-1.036 2.25-1.531 0.58-0.383 1.16-0.764 1.75-1.125 0.45-0.274 0.89-0.551 1.34-0.813 0.69-0.395 1.37-0.757 2.07-1.125 0.17-0.093 0.35-0.189 0.53-0.281 0.94-0.491 1.88-0.966 2.84-1.406 0.87-0.397 1.72-0.769 2.59-1.125 0.16-0.062 0.32-0.096 0.47-0.157 0.97-0.384 1.93-0.758 2.91-1.093 0.56-0.192 1.12-0.356 1.69-0.532 0.58-0.181 1.16-0.367 1.75-0.531 0.88-0.246 1.77-0.48 2.65-0.687 0.07-0.017 0.15-0.015 0.22-0.032 0.42-0.095 0.84-0.193 1.25-0.281 0.67-0.141 1.36-0.287 2.03-0.406 0.09-0.015 0.17-0.017 0.25-0.031 0.95-0.164 1.92-0.317 2.88-0.438 1.96-0.247 3.93-0.401 5.9-0.469 1.06-0.035 2.11-0.046 3.16-0.031z" clip-path="url(#clipPath8750)" transform="matrix(1 .080878 0 1 0 -21.056)" filter="url(#filter7286)" fill="#2d3335"/> + </g> + <g id="layer5"> + <path id="rect5757-8-7-7-9" d="m48.01 227.46l-4.807 4.55c-5.007-5.31-10.24-10.7-15.08-16.13l4.491-4.07c6.829 6.53 8.872 8.53 15.396 15.65z" fill="url(#linearGradient6241)"/> + <path id="path5604-9-1-8" d="m-95.5 225c28.719 0 52 23.28 52 52s-23.281 52-52 52c-28.72 0-52-23.28-52-52s23.28-52 52-52z" fill-opacity=".47594" fill="#d0e9f2"/> + <g id="g6060"> + <path id="path5604" d="m-82 136c-27.61 0-50-22.39-50-50 0-27.614 22.39-50 50-50 27.614 0 50 22.386 50 50 0 27.61-22.386 50-50 50zm0-3c26.51 0 48-20.49 48-47s-21.49-47-48-47-48 20.49-48 47 21.49 47 48 47z" fill="#2d3335"/> + <path id="path5604-2" fill="#9eaaac" d="m-82 136c-27.61 0-50-22.39-50-50v-0.5c0.27 27.38 22.55 49.5 50 49.5 27.446 0 49.729-22.12 50-49.5 0.002 0.168 0 0.332 0 0.5 0 27.61-22.386 50-50 50zm-48-50.5v-0.5c0-26.51 21.49-47 48-47s48 20.49 48 47c0 0.168 0.002 0.333 0 0.5-0.27-26.266-21.658-46.5-48-46.5-26.34 0-47.73 20.234-48 46.5z"/> + <path id="path5604-9" d="m-82 134c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z" fill-opacity=".47594" fill="#d0e9f2"/> + <path id="path5604-9-1" d="m-82 134c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z" fill="url(#radialGradient5751)"/> + <path id="path5604-9-1-8-8" fill="url(#linearGradient5778)" d="m-96.438 130.72l-0.843 5c4.83 1.48 9.965 2.28 15.281 2.28s10.451-0.8 15.281-2.28l-0.843-5c-4.553 1.47-9.397 2.28-14.438 2.28s-9.885-0.81-14.438-2.28z"/> + <path id="rect5757" fill="url(#linearGradient5768)" d="m-82 136.25c1.757 0 3.431 0.3 5 0.81v26.63c-1.569 0.51-3.243 0.81-5 0.81s-3.431-0.3-5-0.81v-26.63c1.569-0.51 3.243-0.81 5-0.81z"/> + <path id="rect5757-8-7" d="m-82 150.5c3.514 0 5.613 0.65 8 2.44v67.12c-3.137 0.91-4.486 1.44-8 1.44s-4.863-0.53-8-1.44v-67.12c2.637-1.79 4.486-2.44 8-2.44z" fill="url(#linearGradient5868)"/> + <path id="rect5757-8" d="m-82 154.5c3.514 0 7.238 0.78 10 2.44v65.12c-2.012 1.79-6.486 2.44-10 2.44s-7.863-0.15-10-2.44v-65.12c1.887-1.66 6.486-2.44 10-2.44z" fill="url(#linearGradient5798)"/> + <path id="rect5757-8-7-7" d="m-82 217.5c3.514 0 5.863 0.78 8 2.44v5.12c-2.387 1.54-4.486 2.44-8 2.44s-5.738-0.9-8-2.44v-5.12c2.387-1.91 4.486-2.44 8-2.44z" fill="url(#linearGradient5899)"/> + <path id="rect5757-8-7-7-0" fill="#e0bb41" d="m-82 221.5c-3.514 0-5.613 0.28-8 2.44v1.12c2.262 1.54 4.486 2.44 8 2.44s5.613-0.9 8-2.44v-1.12c-2.512-2.04-4.486-2.44-8-2.44z"/> + </g> + <path id="path5604-26" d="m125.06 134.69c-27.176-27.18-27.176-71.251 0-98.431 27.18-27.18 71.25-27.18 98.43 0s27.18 71.251 0 98.431-71.25 27.18-98.43 0zm2.96-2.96c26.09 26.1 67.41 27.08 93.5 0.99 26.1-26.1 25.11-67.416-0.98-93.509-26.09-26.092-67.41-27.077-93.51-0.984-26.09 26.093-25.11 67.413 0.99 93.503z" fill="#2d3335"/> + <path id="path5604-2-9" fill="#9eaaac" d="m125.06 134.69c-27.176-27.18-27.176-71.251 0-98.431 0.17-0.166 0.33-0.329 0.5-0.493-26.689 27.218-26.526 70.924 0.49 97.934 27.01 27.02 70.72 27.18 97.93 0.49-0.16 0.17-0.32 0.33-0.49 0.5-27.18 27.18-71.25 27.18-98.43 0zm2.46-96.955c0.17-0.167 0.33-0.327 0.5-0.492 26.09-26.093 67.41-25.109 93.5 0.984 26.1 26.093 27.08 67.413 0.99 93.503l-0.5 0.5c25.59-26.12 24.46-67.091-1.47-93.019-25.93-25.927-66.9-27.063-93.02-1.476z"/> + <path id="path5604-9-13" d="m127.03 132.72c26.1 26.09 68.4 26.09 94.49 0 26.1-26.1 26.1-68.4 0-94.493-26.09-26.093-68.39-26.093-94.49 0-26.09 26.093-26.09 68.393 0 94.493z" fill-opacity=".47594" fill="#d0e9f2"/> + <path id="path5604-9-1-3" d="m127.03 132.72c26.1 26.09 68.4 26.09 94.49 0 26.1-26.1 26.1-68.4 0-94.493-26.09-26.093-68.39-26.093-94.49 0-26.09 26.093-26.09 68.393 0 94.493z" fill="url(#radialGradient6256)"/> + <path id="path5604-9-1-8-8-1" fill="url(#linearGradient6253)" d="m116.05 115.28l-5.75 4.09c3.3 6.21 7.56 12.05 12.8 17.28 5.23 5.24 11.07 9.5 17.28 12.8l4.09-5.75c-5.92-3.04-11.49-7.01-16.45-11.97s-8.93-10.53-11.97-16.45z"/> + <path id="rect5757-5" fill="url(#linearGradient6250)" d="m124.82 134.93c1.73 1.73 3.08 3.67 4.12 5.72l-26.21 26.21c-2.05-1.04-3.988-2.39-5.718-4.12-1.729-1.73-3.084-3.67-4.121-5.72l26.209-26.21c2.05 1.04 3.99 2.39 5.72 4.12z"/> + <path id="rect5757-8-7-2" d="m116.27 159.23l-66.071 66.07c-3.984-2.19-5.832-3-9.29-6.46s-4.267-5.3-6.459-9.29l66.07-66.07c5.06 3.75 12.12 10.4 15.75 15.75z" fill="url(#linearGradient6247)"/> + <path id="rect5757-8-6" d="m105.78 154.12c3.46 3.46 7.43 6.66 8.52 11.02l-64.101 64.1c-6.517-5.16-14.555-12.79-19.686-19.69l64.1-64.1c3.491 0.23 7.657 5.16 11.117 8.62l0.05 0.05z" fill="url(#linearGradient6244)"/> + <path id="rect5757-8-6-3" opacity=".59565" d="m105.53 154.36c3.46 3.46 7.68 6.42 8.77 10.78l-64.101 64.1c-7.877-6.91-11.798-10.63-19.686-19.69l64.1-64.1c3.491 0.23 7.417 5.45 10.877 8.91h0.04z" fill="url(#linearGradient6279)"/> + <path id="path6587" opacity=".60435" d="m131.17 37.05c40.66-32.173 78.13-12.728 77.78 5.303s-56.57 70.357-76.37 66.117-25.45-53.389-1.41-71.42z" fill="url(#linearGradient6595)"/> + <text id="text6302-7" opacity=".46087" font-weight="bold" xml:space="preserve" transform="matrix(.98796 -.15470 .15470 .98796 0 0)" font-size="19.8px" y="69.184349" x="99.83886" font-family="Monospace" fill="url(#radialGradient6482)"><tspan id="tspan6304-0" y="69.184349" x="99.83886">01011001</tspan><tspan id="tspan6415-7" y="93.934013" x="99.83886">00110101</tspan><tspan id="tspan6417-1" y="118.68368" x="99.83886">10010011</tspan><tspan id="tspan6419-9" y="143.43335" x="99.83886"/></text> + <text id="text6302" font-weight="bold" xml:space="preserve" transform="matrix(.98796 -.15470 .15470 .98796 0 0)" font-size="19.8px" y="67.898323" x="99.410172" font-family="Monospace" fill="url(#radialGradient6427)"><tspan id="tspan6304" y="67.898323" x="99.410172">01011001</tspan><tspan id="tspan6415" y="92.647987" x="99.410172">00110101</tspan><tspan id="tspan6417" y="117.39765" x="99.410172">10010011</tspan><tspan id="tspan6419" y="142.14732" x="99.410172"/></text> + <path id="path6587-7" opacity=".76522" d="m219.46 129.09c-26.79 21.98-41.81 21.01-38.07 13.14 3.73-7.87 42.32-41.66 51.45-43.75 9.12-2.093 2.27 18.04-13.38 30.61z" fill="url(#linearGradient6614)"/> + </g> +</svg> \ No newline at end of file diff --git a/img/logo_leaflet.png b/img/logo_leaflet.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3a4d5e01981bf5b293e1f8d174431b782a5363 Binary files /dev/null and b/img/logo_leaflet.png differ diff --git a/img/logo_mapview.gif b/img/logo_mapview.gif new file mode 100644 index 0000000000000000000000000000000000000000..36e7cabcc318d04ba3cdef64c9ade3efe0334a70 Binary files /dev/null and b/img/logo_mapview.gif differ diff --git a/public/02-data_acquisition.html b/public/02-data_acquisition.html new file mode 100644 index 0000000000000000000000000000000000000000..dbbd4517502d1f5efae818a2c47a49430f666166 --- /dev/null +++ b/public/02-data_acquisition.html @@ -0,0 +1,536 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> + +<meta charset="utf-8"> +<meta name="generator" content="quarto-0.9.617"> + +<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> + + +<title>Mapping and spatial analyses in R for One Health studies - 2 Data Acquisition</title> +<style> +code{white-space: pre-wrap;} +span.smallcaps{font-variant: small-caps;} +span.underline{text-decoration: underline;} +div.column{display: inline-block; vertical-align: top; width: 50%;} +div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} +ul.task-list{list-style: none;} +pre > code.sourceCode { white-space: pre; position: relative; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } +pre > code.sourceCode > span:empty { height: 1.2em; } +.sourceCode { overflow: visible; } +code.sourceCode > span { color: inherit; text-decoration: inherit; } +div.sourceCode { margin: 1em 0; } +pre.sourceCode { margin: 0; } +@media screen { +div.sourceCode { overflow: auto; } +} +@media print { +pre > code.sourceCode { white-space: pre-wrap; } +pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } +} +pre.numberSource code + { counter-reset: source-line 0; } +pre.numberSource code > span + { position: relative; left: -4em; counter-increment: source-line; } +pre.numberSource code > span > a:first-child::before + { content: counter(source-line); + position: relative; left: -1em; text-align: right; vertical-align: baseline; + border: none; display: inline-block; + -webkit-touch-callout: none; -webkit-user-select: none; + -khtml-user-select: none; -moz-user-select: none; + -ms-user-select: none; user-select: none; + padding: 0 4px; width: 4em; + color: #aaaaaa; + } +pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } +div.sourceCode + { } +@media screen { +pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } +} +code span.al { color: #ff0000; font-weight: bold; } /* Alert */ +code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ +code span.at { color: #7d9029; } /* Attribute */ +code span.bn { color: #40a070; } /* BaseN */ +code span.bu { } /* BuiltIn */ +code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ +code span.ch { color: #4070a0; } /* Char */ +code span.cn { color: #880000; } /* Constant */ +code span.co { color: #60a0b0; font-style: italic; } /* Comment */ +code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ +code span.do { color: #ba2121; font-style: italic; } /* Documentation */ +code span.dt { color: #902000; } /* DataType */ +code span.dv { color: #40a070; } /* DecVal */ +code span.er { color: #ff0000; font-weight: bold; } /* Error */ +code span.ex { } /* Extension */ +code span.fl { color: #40a070; } /* Float */ +code span.fu { color: #06287e; } /* Function */ +code span.im { } /* Import */ +code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ +code span.kw { color: #007020; font-weight: bold; } /* Keyword */ +code span.op { color: #666666; } /* Operator */ +code span.ot { color: #007020; } /* Other */ +code span.pp { color: #bc7a00; } /* Preprocessor */ +code span.sc { color: #4070a0; } /* SpecialChar */ +code span.ss { color: #bb6688; } /* SpecialString */ +code span.st { color: #4070a0; } /* String */ +code span.va { color: #19177c; } /* Variable */ +code span.vs { color: #4070a0; } /* VerbatimString */ +code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} +</style> + + +<script src="site_libs/quarto-nav/quarto-nav.js"></script> +<script src="site_libs/quarto-nav/headroom.min.js"></script> +<script src="site_libs/clipboard/clipboard.min.js"></script> +<script src="site_libs/quarto-search/autocomplete.umd.js"></script> +<script src="site_libs/quarto-search/fuse.min.js"></script> +<script src="site_libs/quarto-search/quarto-search.js"></script> +<meta name="quarto:offset" content="./"> +<link href="./references.html" rel="next"> +<link href="./01-introduction.html" rel="prev"> +<script src="site_libs/quarto-html/quarto.js"></script> +<script src="site_libs/quarto-html/popper.min.js"></script> +<script src="site_libs/quarto-html/tippy.umd.min.js"></script> +<script src="site_libs/quarto-html/anchor.min.js"></script> +<link href="site_libs/quarto-html/tippy.css" rel="stylesheet"> +<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"> +<script src="site_libs/bootstrap/bootstrap.min.js"></script> +<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> +<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet"> +<script id="quarto-search-options" type="application/json">{ + "location": "sidebar", + "copy-button": false, + "collapse-after": 3, + "panel-placement": "start", + "type": "textbox", + "limit": 20, + "language": { + "search-no-results-text": "No results", + "search-matching-documents-text": "matching documents", + "search-copy-link-title": "Copy link to search", + "search-hide-matches-text": "Hide additional matches", + "search-more-match-text": "more match in this document", + "search-more-matches-text": "more matches in this document", + "search-clear-button-title": "Clear", + "search-detached-cancel-button-title": "Cancel", + "search-submit-button-title": "Submit" + } +}</script> +<script src="site_libs/htmlwidgets-1.5.4/htmlwidgets.js"></script> +<script src="site_libs/jquery-1.12.4/jquery.min.js"></script> +<link href="site_libs/leaflet-1.3.1/leaflet.css" rel="stylesheet"> +<script src="site_libs/leaflet-1.3.1/leaflet.js"></script> +<link href="site_libs/leafletfix-1.0.0/leafletfix.css" rel="stylesheet"> +<script src="site_libs/proj4-2.6.2/proj4.min.js"></script> +<script src="site_libs/Proj4Leaflet-1.0.1/proj4leaflet.js"></script> +<link href="site_libs/rstudio_leaflet-1.3.1/rstudio_leaflet.css" rel="stylesheet"> +<script src="site_libs/leaflet-binding-2.1.1/leaflet.js"></script> +<script src="site_libs/leaflet-providers-1.9.0/leaflet-providers_1.9.0.js"></script> +<script src="site_libs/leaflet-providers-plugin-2.1.1/leaflet-providers-plugin.js"></script> +<link href="site_libs/HomeButton-0.0.1/home-button.css" rel="stylesheet"> +<script src="site_libs/HomeButton-0.0.1/home-button.js"></script> +<script src="site_libs/HomeButton-0.0.1/easy-button-src.min.js"></script> +<script src="site_libs/clipboard-0.0.1/setClipboardText.js"></script> +<link href="site_libs/mapviewCSS-0.0.1/mapview-popup.css" rel="stylesheet"> +<link href="site_libs/mapviewCSS-0.0.1/mapview.css" rel="stylesheet"> + + +<link rel="stylesheet" href="styles.css"> +</head> + +<body class="nav-sidebar floating"> + +<div id="quarto-search-results"></div> + <header id="quarto-header" class="headroom fixed-top"> + <nav class="quarto-secondary-nav" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> + <div class="container-fluid d-flex justify-content-between"> + <h1 class="quarto-secondary-nav-title"><span class="chapter-number">2</span> <span class="chapter-title">Data Acquisition</span></h1> + <button type="button" class="quarto-btn-toggle btn" aria-label="Show secondary navigation"> + <i class="bi bi-chevron-right"></i> + </button> + </div> + </nav> +</header> +<!-- content --> +<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article"> +<!-- sidebar --> + <nav id="quarto-sidebar" class="sidebar collapse sidebar-navigation floating overflow-auto"> + <div class="pt-lg-2 mt-2 text-left sidebar-header"> + <div class="sidebar-title mb-0 py-0"> + <a href="./">Mapping and spatial analyses in R for One Health studies</a> + <div class="sidebar-tools-main"> + <a href="https://forge.ird.fr/espace-dev/personnels/longour/rspatial-for-onehealth" title="Source Code" class="sidebar-tool px-1"><i class="bi bi-git"></i></a> +</div> + </div> + </div> + <div class="mt-2 flex-shrink-0 align-items-center"> + <div class="sidebar-search"> + <div id="quarto-search" class="" title="Search"></div> + </div> + </div> + <div class="sidebar-menu-container"> + <ul class="list-unstyled mt-1"> + <li class="sidebar-item"> + <div class="sidebar-item-container"> + <a href="./index.html" class="sidebar-item-text sidebar-link">Preface</a> + </div> +</li> + <li class="sidebar-item"> + <div class="sidebar-item-container"> + <a href="./01-introduction.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">1</span> <span class="chapter-title">Introduction</span></a> + </div> +</li> + <li class="sidebar-item"> + <div class="sidebar-item-container"> + <a href="./02-data_acquisition.html" class="sidebar-item-text sidebar-link active"><span class="chapter-number">2</span> <span class="chapter-title">Data Acquisition</span></a> + </div> +</li> + <li class="sidebar-item"> + <div class="sidebar-item-container"> + <a href="./references.html" class="sidebar-item-text sidebar-link">References</a> + </div> +</li> + </ul> + </div> +</nav> +<!-- margin-sidebar --> + <div id="quarto-margin-sidebar" class="sidebar margin-sidebar"> + <nav id="TOC" role="doc-toc"> + <h2 id="toc-title">Table of contents</h2> + + <ul> + <li><a href="#import-from-lat-long-file" id="toc-import-from-lat-long-file" class="nav-link active" data-scroll-target="#import-from-lat-long-file"> <span class="header-section-number">2.1</span> Import from lat / long file</a></li> + <li><a href="#online-databases" id="toc-online-databases" class="nav-link" data-scroll-target="#online-databases"> <span class="header-section-number">2.2</span> Online databases</a></li> + <li><a href="#openstreetmap" id="toc-openstreetmap" class="nav-link" data-scroll-target="#openstreetmap"> <span class="header-section-number">2.3</span> OpenStreetMap</a> + <ul class="collapse"> + <li><a href="#display-and-interactive-map" id="toc-display-and-interactive-map" class="nav-link" data-scroll-target="#display-and-interactive-map"> <span class="header-section-number">2.3.1</span> Display and interactive map</a></li> + <li><a href="#import-basemaps" id="toc-import-basemaps" class="nav-link" data-scroll-target="#import-basemaps"> <span class="header-section-number">2.3.2</span> Import basemaps</a></li> + </ul></li> + </ul> +</nav> + </div> +<!-- main --> +<main class="content" id="quarto-document-content"> + +<header id="title-block-header" class="quarto-title-block default"> +<div class="quarto-title"> +<h1 class="title d-none d-lg-block"><span class="chapter-number">2</span> <span class="chapter-title">Data Acquisition</span></h1> +</div> + + + +<div class="quarto-title-meta"> + + + + </div> + + +</header> + +<section id="import-from-lat-long-file" class="level2" data-number="2.1"> +<h2 data-number="2.1" class="anchored" data-anchor-id="import-from-lat-long-file"><span class="header-section-number">2.1</span> Import from lat / long file</h2> +<p>The function <code>st_as_sf()</code> makes it possible to transform a <code>data.frame</code> container of geographic coordinates into an object <code>sf</code>. Here we use the <code>data.frame</code> <code>places2</code> created in the previous point.</p> +<div class="cell" data-nm="true"> +<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span> +<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>place_sf <span class="ot"><-</span> <span class="fu">st_as_sf</span>(<span class="fu">read.csv</span>(<span class="st">"data_cambodia/adress.csv"</span>), <span class="at">coords =</span> <span class="fu">c</span>(<span class="st">"long"</span>, <span class="st">"lat"</span>), <span class="at">crs =</span> <span class="dv">4326</span>)</span> +<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>place_sf</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output cell-output-stdout"> +<pre class="code-out"><code>Simple feature collection with 2 features and 1 field +Geometry type: POINT +Dimension: XY +Bounding box: xmin: 104.8443 ymin: 11.54366 xmax: 104.9047 ymax: 11.55349 +Geodetic CRS: WGS 84 + address +1 Phnom Penh International Airport, Phnom Penh, Cambodia +2 Khmer Soviet Friendship Hospital, Phnom Penh, Cambodia + geometry +1 POINT (104.8443 11.55349) +2 POINT (104.9047 11.54366)</code></pre> +</div> +</div> +<p>To crate a <code>sf</code> POINT type object with only one pair of coordinate (WGS84, longitude=0.5, latitude = 45.5) :</p> +<div class="cell" data-nm="true"> +<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span> +<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>test_point <span class="ot"><-</span> <span class="fu">st_as_sf</span>(<span class="fu">data.frame</span>(<span class="at">x =</span> <span class="fl">0.5</span>, <span class="at">y =</span> <span class="fl">45.5</span>), <span class="at">coords =</span> <span class="fu">c</span>(<span class="st">"x"</span>, <span class="st">"y"</span>), <span class="at">crs =</span> <span class="dv">4326</span>)</span> +<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>test_point</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output cell-output-stdout"> +<pre class="code-out"><code>Simple feature collection with 1 feature and 0 fields +Geometry type: POINT +Dimension: XY +Bounding box: xmin: 0.5 ymin: 45.5 xmax: 0.5 ymax: 45.5 +Geodetic CRS: WGS 84 + geometry +1 POINT (0.5 45.5)</code></pre> +</div> +</div> +<p>We can display this object <code>sf</code> on an <a href="https://www.openstreetmap.org/">OpenStreetMap</a> basesmap with the package maptiles <code>maptiles</code> <span class="citation" data-cites="maptiles">(<a href="references.html#ref-maptiles" role="doc-biblioref">Giraud 2021</a>)</span>.</p> +<div class="cell" data-nm="true"> +<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(maptiles)</span> +<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>osm <span class="ot"><-</span> <span class="fu">get_tiles</span>(<span class="at">x =</span> place_sf, <span class="at">zoom =</span> <span class="dv">12</span>)</span> +<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="fu">plot_tiles</span>(osm)</span> +<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_geometry</span>(place_sf), <span class="at">pch =</span> <span class="dv">2</span>, <span class="at">cex =</span> <span class="dv">2</span>, <span class="at">col =</span> <span class="st">"red"</span>, <span class="at">add =</span> <span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output-display"> +<p><img src="02-data_acquisition_files/figure-html/display_sf-1.png" class="img-fluid" width="788"></p> +</div> +</div> +</section> +<section id="online-databases" class="level2" data-number="2.2"> +<h2 data-number="2.2" class="anchored" data-anchor-id="online-databases"><span class="header-section-number">2.2</span> Online databases</h2> +</section> +<section id="openstreetmap" class="level2" data-number="2.3"> +<h2 data-number="2.3" class="anchored" data-anchor-id="openstreetmap"><span class="header-section-number">2.3</span> OpenStreetMap</h2> +<div style="float: right"> +<p><img src="img/Openstreetmap_logo.svg" width="150px" padding="1em"></p> +</div> +<p><a href="https://www.openstreetmap.org" target="_blank">OpenStreetMap (OSM)</a> is a participatory mapping project that aim s to buil a free geographic database on a global scale. OpenStreetMap lets you view, edit and use geographic data around the world.</p> +<p><strong>Terms of use</strong></p> +<blockquote class="blockquote"> +<p>OpenStreetMap is open data : you are free to use it for ant purpose as long as you credit OpenStreetMap and its contributers. If you modify or rely data in any way, you may distribute the result only under the same license. (…)</p> +</blockquote> +<p><strong>Contributors</strong></p> +<blockquote class="blockquote"> +<p>(…) Our contributors incloude enthusiastic mapmakers, GIS professional, engineers running OSM servers, humanitarians mapping disaster-stricken areas and many mmore.(…)</p> +</blockquote> +<section id="display-and-interactive-map" class="level3" data-number="2.3.1"> +<h3 data-number="2.3.1" class="anchored" data-anchor-id="display-and-interactive-map"><span class="header-section-number">2.3.1</span> Display and interactive map</h3> +<p>The two main packages that allow to display as interactive map based on OSM are <code>leaflet</code> <span class="citation" data-cites="leaflet">(<a href="references.html#ref-leaflet" role="doc-biblioref">Cheng, Karambelkar, and Xie 2022</a>)</span> and <code>mapview</code> <span class="citation" data-cites="mapview">(<a href="references.html#ref-mapview" role="doc-biblioref">Appelhans et al. 2022</a>)</span>.</p> +<section id="leaflet" class="level4" data-number="2.3.1.1"> +<h4 data-number="2.3.1.1" class="anchored" data-anchor-id="leaflet"><span class="header-section-number">2.3.1.1</span> <code>leaflet</code></h4> +<p><img src="img/logo_leaflet.png" align="right" width="200"> <code>leaflet</code> uses the javascript library Leaflet <span class="citation" data-cites="JS-Leaflet">(<a href="references.html#ref-JS-Leaflet" role="doc-biblioref">Agafonkin 2015</a>)</span> to create interactive maps.</p> +<div class="cell"> +<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span> +<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(leaflet)</span> +<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a>district <span class="ot"><-</span> <span class="fu">st_read</span>(<span class="st">"data_cambodia/cambodia.gpkg"</span>, <span class="at">layer =</span> <span class="st">"district"</span>, <span class="at">quiet =</span> <span class="cn">TRUE</span>)</span> +<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a>hospital <span class="ot"><-</span> <span class="fu">st_read</span>(<span class="st">"data_cambodia/cambodia.gpkg"</span>, <span class="at">layer =</span> <span class="st">"hospital"</span>, <span class="at">quiet =</span> <span class="cn">TRUE</span>)</span> +<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a>banan <span class="ot"><-</span> district[district<span class="sc">$</span>ADM2_PCODE <span class="sc">==</span> <span class="st">"KH0201"</span>, ] <span class="co">#Select one district (Banan district: KH0201)</span></span> +<span id="cb6-9"><a href="#cb6-9" aria-hidden="true" tabindex="-1"></a>health_banan <span class="ot"><-</span> hospital[hospital<span class="sc">$</span>DCODE <span class="sc">==</span> <span class="st">"201"</span>, ] <span class="co">#Select Health centers in Banan</span></span> +<span id="cb6-10"><a href="#cb6-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb6-11"><a href="#cb6-11" aria-hidden="true" tabindex="-1"></a>banan <span class="ot"><-</span> <span class="fu">st_transform</span>(banan, <span class="dv">4326</span>) <span class="co">#Transform coordinate system to WGS84</span></span> +<span id="cb6-12"><a href="#cb6-12" aria-hidden="true" tabindex="-1"></a>health_banan <span class="ot"><-</span> <span class="fu">st_transform</span>(health_banan, <span class="dv">4326</span>)</span> +<span id="cb6-13"><a href="#cb6-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb6-14"><a href="#cb6-14" aria-hidden="true" tabindex="-1"></a>banan_map <span class="ot"><-</span> <span class="fu">leaflet</span>(banan) <span class="sc">%>%</span> <span class="co">#Create interactive map</span></span> +<span id="cb6-15"><a href="#cb6-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">addTiles</span>() <span class="sc">%>%</span></span> +<span id="cb6-16"><a href="#cb6-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">addPolygons</span>() <span class="sc">%>%</span></span> +<span id="cb6-17"><a href="#cb6-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">addMarkers</span>(<span class="at">data =</span> health_banan)</span> +<span id="cb6-18"><a href="#cb6-18" aria-hidden="true" tabindex="-1"></a>banan_map</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output-display"> +<div id="htmlwidget-a788e0ad1bb5305cd165" style="width:100%;height:464px;" class="leaflet html-widget"></div> +<script type="application/json" data-for="htmlwidget-a788e0ad1bb5305cd165">{"x":{"options":{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}}},"calls":[{"method":"addTiles","args":["https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",null,null,{"minZoom":0,"maxZoom":18,"tileSize":256,"subdomains":"abc","errorTileUrl":"","tms":false,"noWrap":false,"zoomOffset":0,"zoomReverse":false,"opacity":1,"zIndex":1,"detectRetina":false,"attribution":"© <a href=\"https://openstreetmap.org\">OpenStreetMap<\/a> contributors, <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA<\/a>"}]},{"method":"addPolygons","args":[[[[{"lng":[102.905700684,102.995117187,102.998901367,103.003295898,103.009094238,103.014099121,103.019104004,103.024291992,103.02947998,103.034912109,103.039123535,103.042907715,103.040100098,103.038330078,103.038696289,103.039123535,103.039916992,103.040710449,103.041320801,103.042907715,103.046081543,103.047485352,103.051696777,103.0546875,103.05871582,103.063720703,103.068115234,103.071899414,103.072692871,103.073486328,103.076904297,103.080688477,103.081481934,103.082092285,103.082275391,103.083129883,103.083679199,103.08392334,103.084106445,103.084899902,103.090515137,103.095703125,103.105712891,103.114929199,103.125488281,103.12890625,103.131286621,103.134094238,103.136901855,103.141113281,103.142883301,103.143676758,103.144897461,103.145874023,103.146911621,103.150878906,103.153930664,103.156677246,103.160095215,103.163513184,103.167724609,103.172119141,103.176330566,103.180908203,103.186096191,103.190490723,103.190307617,103.1875,103.18371582,103.181274414,103.177490234,103.174499512,103.172912598,103.172485352,103.173095703,103.171081543,103.167724609,103.167907715,103.16607666,103.162109375,103.163879395,103.160705566,103.158081055,103.160888672,103.165283203,103.167907715,103.169494629,103.17388916,103.177124023,103.183105469,103.18951416,103.193115234,103.19732666,103.200500488,103.201293945,103.202270508,103.202880859,103.204711914,103.205505371,103.206298828,103.207275391,103.208312988,103.209899902,103.221313477,103.219726562,103.221130371,103.22052002,103.22088623,103.200927734,103.167297363,103.147888184,103.116516113,103.079284668,103.044128418,103.040100098,103.030273437,103.044311523,103.040100098,103.022521973,103.002502441,102.996276855,102.98248291,102.968688965,102.957092285,102.959106445,102.938476562,102.861694336,102.84552002,102.829101562,102.922302246,102.926696777,102.926696777,102.925109863,102.923278809,102.921508789,102.919494629,102.917480469,102.915283203,102.913085937,102.911315918,102.908691406,102.90612793,102.905273437,102.904296875,102.903686523,102.90447998,102.905700684],"lat":[13.1356811520001,13.134887695,13.134887695,13.134887695,13.1347045900001,13.1347045900001,13.134887695,13.134887695,13.135070801,13.134887695,13.134887695,13.1333007810001,13.128479004,13.12512207,13.121704102,13.118286133,13.1145019530001,13.1102905270001,13.1068725590001,13.104125977,13.1036987300001,13.1010742190001,13.0988769530001,13.097473145,13.0957031250001,13.094299316,13.094299316,13.094299316,13.090698242,13.086730957,13.086303711,13.086303711,13.07989502,13.0759277340001,13.07232666,13.0682983400001,13.0651245120001,13.0612792970001,13.0568847660001,13.051330566,13.051086426,13.051330566,13.052124023,13.0524902340001,13.0524902340001,13.047729492,13.045471191,13.0471191410001,13.0493164060001,13.0515136720001,13.046691895,13.04309082,13.0380859370001,13.034484863,13.03112793,13.030883789,13.032287598,13.0336914060001,13.0349121090001,13.034484863,13.034301758,13.034301758,13.034301758,13.034301758,13.034301758,13.033081055,13.028930664,13.0263061520001,13.027893066,13.0258789060001,13.026489258,13.0250854490001,13.022094727,13.0184936520001,13.014709473,13.0109252930001,13.011291504,13.014709473,13.0170898440001,13.0170898440001,13.01348877,13.0114746090001,13.009094238,13.0070800780001,13.006713867,13.004699707,13.0004882810001,12.9995117190001,12.9996948240001,12.9995117190001,12.999328613,12.999084473,12.9982910160001,12.9882812500001,12.983276367,12.978088379,12.974914551,12.970092773,12.965881348,12.962524414,12.955871582,12.951721191,12.947875977,12.9509277340001,12.931518555,12.9274902340001,12.9110717770001,12.8925170900001,12.8701171870001,12.832092285,12.8225097660001,12.8082885740001,12.7885131840001,12.77130127,12.7706909180001,12.839904785,12.8615112300001,12.8679199220001,12.8942871090001,12.92388916,12.929504395,12.933898926,12.9384765620001,12.9420776370001,12.949523926,12.9520874020001,12.965698242,13.0017089840001,13.037902832,13.0739135740001,13.075500488,13.078674316,13.0827026370001,13.0858764650001,13.088500977,13.0922851560001,13.0966796870001,13.1002807620001,13.1035156250001,13.107299805,13.110717773,13.116516113,13.120910645,13.124084473,13.127319336,13.13092041,13.1356811520001]}]]],null,null,{"interactive":true,"className":"","stroke":true,"color":"#03F","weight":5,"opacity":0.5,"fill":true,"fillColor":"#03F","fillOpacity":0.2,"smoothFactor":1,"noClip":false},null,null,null,{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},null]},{"method":"addMarkers","args":[[12.9967916898305,12.9567883731443,12.8720155591406,13.0282719817933,12.9670658006501,13.059247470427],[103.160327966176,103.145195121288,103.103397307151,103.097624250892,103.051274915643,103.060133124932],null,null,null,{"interactive":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},null,null,null,null,null,{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},null]}],"limits":{"lat":[12.7706909180001,13.1356811520001],"lng":[102.829101562,103.221313477]}},"evals":[],"jsHooks":[]}</script> +</div> +</div> +<div class="callout-note callout callout-style-simple no-icon"> +<div class="callout-body d-flex"> +<div class="callout-icon-container"> +<i class="callout-icon no-icon"></i> +</div> +<div class="callout-body-container"> +<p>Website of <code>leaflet</code><br> +<a href="https://rstudio.github.io/leaflet/">Leaflet for R</a></p> +</div> +</div> +</div> +</section> +<section id="mapview" class="level4" data-number="2.3.1.2"> +<h4 data-number="2.3.1.2" class="anchored" data-anchor-id="mapview"><span class="header-section-number">2.3.1.2</span> <code>mapview</code></h4> +<p><img src="img/logo_mapview.gif" align="right" width="150"> <code>mapview</code> relies on <code>leaflet</code> to create interactive maps, its use is easier and its documentation is a bit dense.</p> +<div class="cell"> +<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(mapview)</span> +<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="fu">mapview</span>(banan) <span class="sc">+</span> <span class="fu">mapview</span>(health_banan)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output-display"> + +<div id="htmlwidget-a69edeea7880baad2383" style="width:100%;height:464px;" class="leaflet html-widget"></div> +<script type="application/json" data-for="htmlwidget-a69edeea7880baad2383">{"x":{"options":{"minZoom":1,"maxZoom":52,"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}},"preferCanvas":false,"bounceAtZoomLimits":false,"maxBounds":[[[-90,-370]],[[90,370]]]},"calls":[{"method":"addProviderTiles","args":["CartoDB.Positron","CartoDB.Positron","CartoDB.Positron",{"errorTileUrl":"","noWrap":false,"detectRetina":false,"pane":"tilePane"}]},{"method":"addProviderTiles","args":["CartoDB.DarkMatter","CartoDB.DarkMatter","CartoDB.DarkMatter",{"errorTileUrl":"","noWrap":false,"detectRetina":false,"pane":"tilePane"}]},{"method":"addProviderTiles","args":["OpenStreetMap","OpenStreetMap","OpenStreetMap",{"errorTileUrl":"","noWrap":false,"detectRetina":false,"pane":"tilePane"}]},{"method":"addProviderTiles","args":["Esri.WorldImagery","Esri.WorldImagery","Esri.WorldImagery",{"errorTileUrl":"","noWrap":false,"detectRetina":false,"pane":"tilePane"}]},{"method":"addProviderTiles","args":["OpenTopoMap","OpenTopoMap","OpenTopoMap",{"errorTileUrl":"","noWrap":false,"detectRetina":false,"pane":"tilePane"}]},{"method":"createMapPane","args":["polygon",420]},{"method":"addPolygons","args":[[[[{"lng":[102.905700684,102.995117187,102.998901367,103.003295898,103.009094238,103.014099121,103.019104004,103.024291992,103.02947998,103.034912109,103.039123535,103.042907715,103.040100098,103.038330078,103.038696289,103.039123535,103.039916992,103.040710449,103.041320801,103.042907715,103.046081543,103.047485352,103.051696777,103.0546875,103.05871582,103.063720703,103.068115234,103.071899414,103.072692871,103.073486328,103.076904297,103.080688477,103.081481934,103.082092285,103.082275391,103.083129883,103.083679199,103.08392334,103.084106445,103.084899902,103.090515137,103.095703125,103.105712891,103.114929199,103.125488281,103.12890625,103.131286621,103.134094238,103.136901855,103.141113281,103.142883301,103.143676758,103.144897461,103.145874023,103.146911621,103.150878906,103.153930664,103.156677246,103.160095215,103.163513184,103.167724609,103.172119141,103.176330566,103.180908203,103.186096191,103.190490723,103.190307617,103.1875,103.18371582,103.181274414,103.177490234,103.174499512,103.172912598,103.172485352,103.173095703,103.171081543,103.167724609,103.167907715,103.16607666,103.162109375,103.163879395,103.160705566,103.158081055,103.160888672,103.165283203,103.167907715,103.169494629,103.17388916,103.177124023,103.183105469,103.18951416,103.193115234,103.19732666,103.200500488,103.201293945,103.202270508,103.202880859,103.204711914,103.205505371,103.206298828,103.207275391,103.208312988,103.209899902,103.221313477,103.219726562,103.221130371,103.22052002,103.22088623,103.200927734,103.167297363,103.147888184,103.116516113,103.079284668,103.044128418,103.040100098,103.030273437,103.044311523,103.040100098,103.022521973,103.002502441,102.996276855,102.98248291,102.968688965,102.957092285,102.959106445,102.938476562,102.861694336,102.84552002,102.829101562,102.922302246,102.926696777,102.926696777,102.925109863,102.923278809,102.921508789,102.919494629,102.917480469,102.915283203,102.913085937,102.911315918,102.908691406,102.90612793,102.905273437,102.904296875,102.903686523,102.90447998,102.905700684],"lat":[13.1356811520001,13.134887695,13.134887695,13.134887695,13.1347045900001,13.1347045900001,13.134887695,13.134887695,13.135070801,13.134887695,13.134887695,13.1333007810001,13.128479004,13.12512207,13.121704102,13.118286133,13.1145019530001,13.1102905270001,13.1068725590001,13.104125977,13.1036987300001,13.1010742190001,13.0988769530001,13.097473145,13.0957031250001,13.094299316,13.094299316,13.094299316,13.090698242,13.086730957,13.086303711,13.086303711,13.07989502,13.0759277340001,13.07232666,13.0682983400001,13.0651245120001,13.0612792970001,13.0568847660001,13.051330566,13.051086426,13.051330566,13.052124023,13.0524902340001,13.0524902340001,13.047729492,13.045471191,13.0471191410001,13.0493164060001,13.0515136720001,13.046691895,13.04309082,13.0380859370001,13.034484863,13.03112793,13.030883789,13.032287598,13.0336914060001,13.0349121090001,13.034484863,13.034301758,13.034301758,13.034301758,13.034301758,13.034301758,13.033081055,13.028930664,13.0263061520001,13.027893066,13.0258789060001,13.026489258,13.0250854490001,13.022094727,13.0184936520001,13.014709473,13.0109252930001,13.011291504,13.014709473,13.0170898440001,13.0170898440001,13.01348877,13.0114746090001,13.009094238,13.0070800780001,13.006713867,13.004699707,13.0004882810001,12.9995117190001,12.9996948240001,12.9995117190001,12.999328613,12.999084473,12.9982910160001,12.9882812500001,12.983276367,12.978088379,12.974914551,12.970092773,12.965881348,12.962524414,12.955871582,12.951721191,12.947875977,12.9509277340001,12.931518555,12.9274902340001,12.9110717770001,12.8925170900001,12.8701171870001,12.832092285,12.8225097660001,12.8082885740001,12.7885131840001,12.77130127,12.7706909180001,12.839904785,12.8615112300001,12.8679199220001,12.8942871090001,12.92388916,12.929504395,12.933898926,12.9384765620001,12.9420776370001,12.949523926,12.9520874020001,12.965698242,13.0017089840001,13.037902832,13.0739135740001,13.075500488,13.078674316,13.0827026370001,13.0858764650001,13.088500977,13.0922851560001,13.0966796870001,13.1002807620001,13.1035156250001,13.107299805,13.110717773,13.116516113,13.120910645,13.124084473,13.127319336,13.13092041,13.1356811520001]}]]],null,"banan",{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}},"pane":"polygon","stroke":true,"color":"#333333","weight":0.5,"opacity":0.9,"fill":true,"fillColor":"#6666FF","fillOpacity":0.6,"smoothFactor":1,"noClip":false},"<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>13 <\/td><\/tr><tr><td>1<\/td><th>ADM2_EN <\/th><td>Banan <\/td><\/tr><tr><td>2<\/td><th>ADM2_PCODE <\/th><td>KH0201 <\/td><\/tr><tr><td>3<\/td><th>ADM1_EN <\/th><td>Battambang <\/td><\/tr><tr><td>4<\/td><th>ADM1_PCODE <\/th><td>KH02 <\/td><\/tr><tr><td>5<\/td><th>Male <\/th><td>54337 <\/td><\/tr><tr><td>6<\/td><th>Female <\/th><td>53116 <\/td><\/tr><tr><td>7<\/td><th>T_POP <\/th><td>107453 <\/td><\/tr><tr><td>8<\/td><th>Area.Km2. <\/th><td>874.4773 <\/td><\/tr><tr><td>9<\/td><th>Status <\/th><td><4500km2 <\/td><\/tr><tr><td>10<\/td><th>DENs <\/th><td>122.8768 <\/td><\/tr><tr><td>11<\/td><th>geom <\/th><td>sfc_MULTIPOLYGON <\/td><\/tr><\/table><\/div>",{"maxWidth":800,"minWidth":50,"autoPan":true,"keepInView":false,"closeButton":true,"closeOnClick":true,"className":""},"13",{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},{"stroke":true,"weight":1,"opacity":0.9,"fillOpacity":0.84,"bringToFront":false,"sendToBack":false}]},{"method":"addScaleBar","args":[{"maxWidth":100,"metric":true,"imperial":true,"updateWhenIdle":true,"position":"bottomleft"}]},{"method":"addHomeButton","args":[102.829101562,12.7706909180001,103.221313477,13.1356811520001,true,"banan","Zoom to banan","<strong> banan <\/strong>","bottomright"]},{"method":"addLegend","args":[{"colors":["#6666FF"],"labels":["banan"],"na_color":null,"na_label":"NA","opacity":1,"position":"topright","type":"factor","title":"","extra":null,"layerId":null,"className":"info legend","group":"banan"}]},{"method":"createMapPane","args":["point",440]},{"method":"addCircleMarkers","args":[[12.9967916898305,12.9567883731443,12.8720155591406,13.0282719817933,12.9670658006501,13.059247470427],[103.160327966176,103.145195121288,103.103397307151,103.097624250892,103.051274915643,103.060133124932],6,null,"health_banan",{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}},"pane":"point","stroke":true,"color":"#333333","weight":1,"opacity":0.9,"fill":true,"fillColor":"#6666FF","fillOpacity":0.6},null,null,["<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>50 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20104 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Chheu Teal <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010407 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Bay Damram <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020412 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Chheu Teal <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Chheu Teal communce, Bat Dambang commune <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>","<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>51 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20104 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Chheu Teal <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010415 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Anlok Kaong <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020413 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Kantueu II <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Kantueu II, Kantueu I, Chheu Teal, Bay Damram Commune <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>","<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>52 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20105 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Chaeng Mean Chey <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010506 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Changhour Svay <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020405 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Chaeng Mean Chey <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Chaeng Mean Chey Commune. 7 Vill <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>","<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>53 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20106 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Phnum Sampov <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010604 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Phnum Sampov Lech <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020416 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Phnum Sampov <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Phnum Sampov Commune, 10 Vill <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>","<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>54 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20107 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Snoeng <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010704 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Snoeng Kaeut <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020414 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Snoeng <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Snoeng Commune, 11 Vill <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>","<div class='scrollableContainer'><table class=mapview-popup id='popup'><tr class='coord'><td><\/td><th><b>Feature ID <\/b><\/th><td>55 <\/td><\/tr><tr><td>1<\/td><th>PCODE <\/th><td>2 <\/td><\/tr><tr><td>2<\/td><th>PNAME <\/th><td>Battambang <\/td><\/tr><tr><td>3<\/td><th>DCODE <\/th><td>201 <\/td><\/tr><tr><td>4<\/td><th>DNAME <\/th><td>Banan <\/td><\/tr><tr><td>5<\/td><th>CCODE <\/th><td>20108 <\/td><\/tr><tr><td>6<\/td><th>CNAME <\/th><td>Ta Kream <\/td><\/tr><tr><td>7<\/td><th>VCODE <\/th><td>2010802 <\/td><\/tr><tr><td>8<\/td><th>VNAME <\/th><td>Ta Kream <\/td><\/tr><tr><td>9<\/td><th>ODCODE <\/th><td>0204 <\/td><\/tr><tr><td>10<\/td><th>ODNAME <\/th><td>Bat Dambang <\/td><\/tr><tr><td>11<\/td><th>FACILITCOD <\/th><td>020415 <\/td><\/tr><tr><td>12<\/td><th>FACILITNAM <\/th><td>Ta Kream <\/td><\/tr><tr><td>13<\/td><th>COVERNAME <\/th><td>Ta Kream Commune, 11 Vill <\/td><\/tr><tr><td>14<\/td><th>geom <\/th><td>sfc_POINT <\/td><\/tr><\/table><\/div>"],{"maxWidth":800,"minWidth":50,"autoPan":true,"keepInView":false,"closeButton":true,"closeOnClick":true,"className":""},["50","51","52","53","54","55"],{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},null]},{"method":"addHomeButton","args":[103.051274915643,12.8720155591406,103.160327966176,13.059247470427,true,"health_banan","Zoom to health_banan","<strong> health_banan <\/strong>","bottomright"]},{"method":"addLayersControl","args":[["CartoDB.Positron","CartoDB.DarkMatter","OpenStreetMap","Esri.WorldImagery","OpenTopoMap"],["banan","health_banan"],{"collapsed":true,"autoZIndex":true,"position":"topleft"}]},{"method":"addLegend","args":[{"colors":["#6666FF"],"labels":["health_banan"],"na_color":null,"na_label":"NA","opacity":1,"position":"topright","type":"factor","title":"","extra":null,"layerId":null,"className":"info legend","group":"health_banan"}]},{"method":"addHomeButton","args":[102.829101562,12.7706909180001,103.221313477,13.1356811520001,true,null,"Zoom to full extent","<strong>Zoom full<\/strong>","bottomleft"]}],"limits":{"lat":[12.7706909180001,13.1356811520001],"lng":[102.829101562,103.221313477]},"fitBounds":[12.7706909180001,102.829101562,13.1356811520001,103.221313477,[]]},"evals":[],"jsHooks":{"render":[{"code":"function(el, x, data) {\n return (\n function(el, x, data) {\n // get the leaflet map\n var map = this; //HTMLWidgets.find('#' + el.id);\n // we need a new div element because we have to handle\n // the mouseover output separately\n // debugger;\n function addElement () {\n // generate new div Element\n var newDiv = $(document.createElement('div'));\n // append at end of leaflet htmlwidget container\n $(el).append(newDiv);\n //provide ID and style\n newDiv.addClass('lnlt');\n newDiv.css({\n 'position': 'relative',\n 'bottomleft': '0px',\n 'background-color': 'rgba(255, 255, 255, 0.7)',\n 'box-shadow': '0 0 2px #bbb',\n 'background-clip': 'padding-box',\n 'margin': '0',\n 'padding-left': '5px',\n 'color': '#333',\n 'font': '9px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif',\n 'z-index': '700',\n });\n return newDiv;\n }\n\n\n // check for already existing lnlt class to not duplicate\n var lnlt = $(el).find('.lnlt');\n\n if(!lnlt.length) {\n lnlt = addElement();\n\n // grab the special div we generated in the beginning\n // and put the mousmove output there\n\n map.on('mousemove', function (e) {\n if (e.originalEvent.ctrlKey) {\n if (document.querySelector('.lnlt') === null) lnlt = addElement();\n lnlt.text(\n ' lon: ' + (e.latlng.lng).toFixed(5) +\n ' | lat: ' + (e.latlng.lat).toFixed(5) +\n ' | zoom: ' + map.getZoom() +\n ' | x: ' + L.CRS.EPSG3857.project(e.latlng).x.toFixed(0) +\n ' | y: ' + L.CRS.EPSG3857.project(e.latlng).y.toFixed(0) +\n ' | epsg: 3857 ' +\n ' | proj4: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs ');\n } else {\n if (document.querySelector('.lnlt') === null) lnlt = addElement();\n lnlt.text(\n ' lon: ' + (e.latlng.lng).toFixed(5) +\n ' | lat: ' + (e.latlng.lat).toFixed(5) +\n ' | zoom: ' + map.getZoom() + ' ');\n }\n });\n\n // remove the lnlt div when mouse leaves map\n map.on('mouseout', function (e) {\n var strip = document.querySelector('.lnlt');\n if( strip !==null) strip.remove();\n });\n\n };\n\n //$(el).keypress(67, function(e) {\n map.on('preclick', function(e) {\n if (e.originalEvent.ctrlKey) {\n if (document.querySelector('.lnlt') === null) lnlt = addElement();\n lnlt.text(\n ' lon: ' + (e.latlng.lng).toFixed(5) +\n ' | lat: ' + (e.latlng.lat).toFixed(5) +\n ' | zoom: ' + map.getZoom() + ' ');\n var txt = document.querySelector('.lnlt').textContent;\n console.log(txt);\n //txt.innerText.focus();\n //txt.select();\n setClipboardText('\"' + txt + '\"');\n }\n });\n\n }\n ).call(this.getMap(), el, x, data);\n}","data":null},{"code":"function(el, x, data) {\n return (function(el,x,data){\n var map = this;\n\n map.on('keypress', function(e) {\n console.log(e.originalEvent.code);\n var key = e.originalEvent.code;\n if (key === 'KeyE') {\n var bb = this.getBounds();\n var txt = JSON.stringify(bb);\n console.log(txt);\n\n setClipboardText('\\'' + txt + '\\'');\n }\n })\n }).call(this.getMap(), el, x, data);\n}","data":null}]}}</script> +</div> +</div> +<div class="callout-note callout callout-style-simple no-icon"> +<div class="callout-body d-flex"> +<div class="callout-icon-container"> +<i class="callout-icon no-icon"></i> +</div> +<div class="callout-body-container"> +<p>Website of <code>mapview</code><br> +<a href="https://r-spatial.github.io/mapview/"><code>mapview</code></a></p> +</div> +</div> +</div> +</section> +</section> +<section id="import-basemaps" class="level3" data-number="2.3.2"> +<h3 data-number="2.3.2" class="anchored" data-anchor-id="import-basemaps"><span class="header-section-number">2.3.2</span> Import basemaps</h3> +<p>The package <code>maptiles</code> <span class="citation" data-cites="maptiles">(<a href="references.html#ref-maptiles" role="doc-biblioref">Giraud 2021</a>)</span> allows downlaoding and displaying raster basemaps.<br> +The function <code>get_tiles()</code> allow you to download OSM background maps and the function <code>plot_tiles()</code> allows to display them.<br> +Renders are better if the input data used the same coordinate system as the tiles (<a href="https://github.com/riatelab/maptiles#projection">EPSG:3857</a>).</p> +<div class="cell"> +<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span> +<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(maptiles)</span> +<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a>district <span class="ot"><-</span> <span class="fu">st_read</span>(<span class="st">"data_cambodia/cambodia.gpkg"</span>, <span class="at">layer =</span> <span class="st">"district"</span>, <span class="at">quiet =</span> <span class="cn">TRUE</span>)</span> +<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a>district <span class="ot"><-</span> <span class="fu">st_transform</span>(district, <span class="dv">3857</span>)</span> +<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a>osm_tiles <span class="ot"><-</span> <span class="fu">get_tiles</span>(<span class="at">x =</span> district, <span class="at">zoom =</span> <span class="dv">10</span>, <span class="at">crop =</span> <span class="cn">TRUE</span>)</span> +<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a><span class="fu">plot_tiles</span>(osm_tiles)</span> +<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">st_geometry</span>(district), <span class="at">border =</span> <span class="st">"grey20"</span>, <span class="at">lwd =</span> .<span class="dv">7</span>, <span class="at">add =</span> <span class="cn">TRUE</span>)</span> +<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a><span class="fu">mtext</span>(<span class="at">side =</span> <span class="dv">1</span>, <span class="at">line =</span> <span class="sc">-</span><span class="dv">2</span>, <span class="at">text =</span> <span class="fu">get_credit</span>(<span class="st">"OpenStreetMap"</span>), <span class="at">col=</span><span class="st">"tomato"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> +<div class="cell-output-display"> +<p><img src="02-data_acquisition_files/figure-html/display_point-1.png" class="img-fluid" width="576"></p> +</div> +</div> + + +<div id="refs" class="references csl-bib-body hanging-indent" role="doc-bibliography" style="display: none"> +<div id="ref-JS-Leaflet" class="csl-entry" role="doc-biblioentry"> +Agafonkin, Vladimir. 2015. <span>“Leaflet Javascript Libary.â€</span> +</div> +<div id="ref-mapview" class="csl-entry" role="doc-biblioentry"> +Appelhans, Tim, Florian Detsch, Christoph Reudenbach, and Stefan Woellauer. 2022. <span>“Mapview: Interactive Viewing of Spatial Data in r.â€</span> <a href="https://CRAN.R-project.org/package=mapview">https://CRAN.R-project.org/package=mapview</a>. +</div> +<div id="ref-leaflet" class="csl-entry" role="doc-biblioentry"> +Cheng, Joe, Bhaskar Karambelkar, and Yihui Xie. 2022. <span>“Leaflet: Create Interactive Web Maps with the JavaScript ’Leaflet’ Library.â€</span> <a href="https://CRAN.R-project.org/package=leaflet">https://CRAN.R-project.org/package=leaflet</a>. +</div> +<div id="ref-maptiles" class="csl-entry" role="doc-biblioentry"> +Giraud, Timothée. 2021. <span>“Maptiles: Download and Display Map Tiles.â€</span> <a href="https://CRAN.R-project.org/package=maptiles">https://CRAN.R-project.org/package=maptiles</a>. +</div> +</div> +</section> +</section> + +</main> <!-- /main --> +<script id="quarto-html-after-body" type="application/javascript"> +window.document.addEventListener("DOMContentLoaded", function (event) { + const icon = ""; + const anchorJS = new window.AnchorJS(); + anchorJS.options = { + placement: 'right', + icon: icon + }; + anchorJS.add('.anchored'); + const clipboard = new window.ClipboardJS('.code-copy-button', { + target: function(trigger) { + return trigger.previousElementSibling; + } + }); + clipboard.on('success', function(e) { + // button target + const button = e.trigger; + // don't keep focus + button.blur(); + // flash "checked" + button.classList.add('code-copy-button-checked'); + var currentTitle = button.getAttribute("title"); + button.setAttribute("title", "Copied!"); + setTimeout(function() { + button.setAttribute("title", currentTitle); + button.classList.remove('code-copy-button-checked'); + }, 1000); + // clear code selection + e.clearSelection(); + }); + function tippyHover(el, contentFn) { + const config = { + allowHTML: true, + content: contentFn, + maxWidth: 500, + delay: 100, + arrow: false, + appendTo: function(el) { + return el.parentElement; + }, + interactive: true, + interactiveBorder: 10, + theme: 'quarto', + placement: 'bottom-start' + }; + window.tippy(el, config); + } + const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); + for (var i=0; i<noterefs.length; i++) { + const ref = noterefs[i]; + tippyHover(ref, function() { + let href = ref.getAttribute('href'); + try { href = new URL(href).hash; } catch {} + const id = href.replace(/^#\/?/, ""); + const note = window.document.getElementById(id); + return note.innerHTML; + }); + } + var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); + for (var i=0; i<bibliorefs.length; i++) { + const ref = bibliorefs[i]; + const cites = ref.parentNode.getAttribute('data-cites').split(' '); + tippyHover(ref, function() { + var popup = window.document.createElement('div'); + cites.forEach(function(cite) { + var citeDiv = window.document.createElement('div'); + citeDiv.classList.add('hanging-indent'); + citeDiv.classList.add('csl-entry'); + var biblioDiv = window.document.getElementById('ref-' + cite); + if (biblioDiv) { + citeDiv.innerHTML = biblioDiv.innerHTML; + } + popup.appendChild(citeDiv); + }); + return popup.innerHTML; + }); + } + var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); + var filterRegex = new RegExp('/' + window.location.host + '/'); + var isInternal = (href) => { + return filterRegex.test(href) || localhostRegex.test(href); + } + // Inspect non-navigation links and adorn them if external + var links = window.document.querySelectorAll('a:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external)'); + for (var i=0; i<links.length; i++) { + const link = links[i]; + if (!isInternal(link.href)) { + // target, if specified + link.setAttribute("target", "_blank"); + } + } +}); +</script> +<nav class="page-navigation"> + <div class="nav-page nav-page-previous"> + <a href="./01-introduction.html" class="pagination-link"> + <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">1</span> <span class="chapter-title">Introduction</span></span> + </a> + </div> + <div class="nav-page nav-page-next"> + <a href="./references.html" class="pagination-link"> + <span class="nav-page-text">References</span> <i class="bi bi-arrow-right-short"></i> + </a> + </div> +</nav> +</div> <!-- /content --> +<footer class="footer"> + <div class="nav-footer"> + <div class="nav-footer-left">UMR 228 ESPACE-DEV</div> + <div class="nav-footer-right"><img src="img/ird_footer.png" height="50"></div> + </div> +</footer> + + + +</body></html> \ No newline at end of file diff --git a/public/02-data_acquisition_files/figure-html/display_point-1.png b/public/02-data_acquisition_files/figure-html/display_point-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1be1e384fa40a104e22ec3e28e378985e23d7551 Binary files /dev/null and b/public/02-data_acquisition_files/figure-html/display_point-1.png differ diff --git a/public/02-data_acquisition_files/figure-html/display_sf-1.png b/public/02-data_acquisition_files/figure-html/display_sf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..116e9a98d8071a2f026c85276421906e53104b4e Binary files /dev/null and b/public/02-data_acquisition_files/figure-html/display_sf-1.png differ diff --git a/public/img/Openstreetmap_logo.svg b/public/img/Openstreetmap_logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..c8a2502d0b0ce3d07a6c3571db9195b2490a11ef --- /dev/null +++ b/public/img/Openstreetmap_logo.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg id="svg3038" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="256" width="256" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs id="defs3040"> + <linearGradient id="linearGradient5762"> + <stop id="stop5764" stop-color="#2d3335" offset="0"/> + <stop id="stop5770" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4680"> + <stop id="stop4682" offset="0"/> + <stop id="stop4684" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4686-3" y2="-179.97" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="9" y1="-94.672" x1="94.25"/> + <linearGradient id="linearGradient4742-3" y2="-30.438" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="35.75" y1="-114.44" x1="50.75"/> + <linearGradient id="linearGradient4734-3" y2="-74.625" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="115.25" y1="-163.12" x1="77.625"/> + <linearGradient id="linearGradient4726-9" y2="7.0625" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="125.72" y1="-50.438" x1="56.5"/> + <linearGradient id="linearGradient4710-2" y2="-146.8" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="180.75" y1="-163.3" x1="35"/> + <linearGradient id="linearGradient4718-4" y2="-41.609" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="179" y1="-141.11" x1="57"/> + <linearGradient id="linearGradient4694-4" y2="39.75" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="208.25" y1="-26.5" x1="156"/> + <linearGradient id="linearGradient4702-4" y2="-77.297" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="235" y1="-169.3" x1="142.75"/> + <linearGradient id="linearGradient4806-9" y2="-113.72" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="166.5" y1="-161.36" x1="214.25"/> + <linearGradient id="linearGradient4744-9"> + <stop id="stop4746-3" stop-color="#fff" offset="0"/> + <stop id="stop4748-8" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient4790-3" y2="-62.469" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="57.656" y1="-126.5" x1="53.25"/> + <linearGradient id="linearGradient4758-2" y2="-17.125" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="75.719" y1="6.625" x1="39.5"/> + <linearGradient id="linearGradient4750-9" y2="-121.44" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="85.312" y1="-162.34" x1="102"/> + <linearGradient id="linearGradient4782-5" y2="-14.75" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="63.5" y1="-78.094" x1="117.75"/> + <linearGradient id="linearGradient4798-4" y2="-60.75" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="133.94" y1="-125.12" x1="180.69"/> + <linearGradient id="linearGradient4766-3" y2="33.375" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" x2="130.22" y1="-23.5" x1="170.75"/> + <linearGradient id="linearGradient4965" y2="-5.6563" xlink:href="#linearGradient4744-9" gradientUnits="userSpaceOnUse" y1="-76" x2="181.75" x1="213.5"/> + <linearGradient id="linearGradient5168" y2="-213.25" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="translate(0,-10)" y1="72.064" x1="210.17"/> + <clipPath id="clipPath5383" clipPathUnits="userSpaceOnUse"> + <path id="path5385" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5426" clipPathUnits="userSpaceOnUse"> + <path id="path5428" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5466" clipPathUnits="userSpaceOnUse"> + <path id="path5468" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <radialGradient id="radialGradient5751" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(1.0213 0 0 -1.0213 -212.72 173.83)" r="47"> + <stop id="stop5747" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient5768" y2="150.38" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-1,0,0,1,46,0)" y1="150.38" x1="123"/> + <linearGradient id="linearGradient5778" y2="143.36" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="130.88" gradientTransform="translate(-210)" y1="134.36" x1="128"/> + <linearGradient id="linearGradient5798" y2="150.38" gradientUnits="userSpaceOnUse" y1="150.38" gradientTransform="matrix(-2 0 0 1.7699 174 -86.65)" x2="133" x1="123"> + <stop id="stop5764-6" stop-color="#2d3335" offset="0"/> + <stop id="stop5770-3" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766-6" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5868" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="translate(-210)" y1="186.5" x1="120"> + <stop id="stop5864" stop-color="#f9e295" offset="0"/> + <stop id="stop5876" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874" stop-color="#fff" offset=".20581"/> + <stop id="stop5870" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5899" y2="186.5" gradientUnits="userSpaceOnUse" y1="186.5" gradientTransform="translate(-210,67)" x2="136" x1="120"> + <stop id="stop5864-0" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-0" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-6" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-4" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-4" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-3" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6241" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="matrix(.98427 .98427 -.98427 .98427 66.992 -59.216)" y1="186.5" x1="120"> + <stop id="stop5864-0-0" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-0-12" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-6-6" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-4-4" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-4-85" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-3-62" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6244" y2="150.38" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-1.9685 -1.9685 -1.7421 1.7421 596.19 167.51)" y1="150.38" x1="123"> + <stop id="stop5764-6-1" stop-color="#2d3335" offset="0"/> + <stop id="stop5770-3-6" stop-color="#4c464a" offset=".5"/> + <stop id="stop5766-6-3" stop-color="#384042" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6247" y2="186.5" gradientUnits="userSpaceOnUse" x2="136" gradientTransform="matrix(.98427 .98427 -.98427 .98427 132.94 -125.16)" y1="186.5" x1="120"> + <stop id="stop5864-8" stop-color="#f9e295" offset="0"/> + <stop id="stop5876-09" stop-color="#f7dd84" offset=".125"/> + <stop id="stop5874-2" stop-color="#fff" offset=".20581"/> + <stop id="stop5870-3" stop-color="#f4ce51" offset=".30113"/> + <stop id="stop5872-1" stop-color="#f9e7aa" offset=".34120"/> + <stop id="stop5866-8" stop-color="#efbb0e" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6250" y2="150.38" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="133" gradientTransform="matrix(-.98427 -.98427 -.98427 .98427 384.91 126.81)" y1="150.38" x1="123"/> + <linearGradient id="linearGradient6253" y2="143.36" xlink:href="#linearGradient5762" gradientUnits="userSpaceOnUse" x2="130.88" gradientTransform="matrix(.98427 .98427 -.98427 .98427 132.94 -125.16)" y1="134.36" x1="128"/> + <radialGradient id="radialGradient6256" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(1.0052 1.0052 1.0052 -1.0052 -40.838 43.253)" r="47"> + <stop id="stop5747-3" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753-6" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755-9" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749-0" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient6279" y2="150.38" xlink:href="#linearGradient4680" gradientUnits="userSpaceOnUse" y1="167.73" gradientTransform="matrix(-1.9685 -1.9685 -1.7421 1.7421 596.19 167.51)" x2="133" x1="108"/> + <radialGradient id="radialGradient6427" gradientUnits="userSpaceOnUse" cy="72.588" cx="159.61" gradientTransform="matrix(1.2125 0 0 .83915 -46.348 24.528)" r="38.417"> + <stop id="stop6848" stop-color="#fff" offset="0"/> + <stop id="stop6852" stop-color="#fff" stop-opacity=".93050" offset=".5"/> + <stop id="stop6850" stop-color="#fff" stop-opacity="0" offset="1"/> + </radialGradient> + <radialGradient id="radialGradient6482" gradientUnits="userSpaceOnUse" cx="159.61" cy="72.588" r="38.417" gradientTransform="matrix(1.2125 0 0 .83915 -45.92 25.814)"> + <stop id="stop4746-3-8" stop-color="#fff" offset="0"/> + <stop id="stop4748-8-3" stop-color="#fff" stop-opacity="0" offset="1"/> + </radialGradient> + <linearGradient id="linearGradient6595" y2="137.2" gradientUnits="userSpaceOnUse" x2="179.96" gradientTransform="translate(0,-10)" y1="29.815" x1="126.64"> + <stop id="stop6591" stop-color="#fff" offset="0"/> + <stop id="stop6593" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient6614" y2="137.2" gradientUnits="userSpaceOnUse" y1="29.815" gradientTransform="matrix(-.50295 .19840 .19720 -.43254 276.16 123.42)" x2="179.96" x1="126.64"> + <stop id="stop6591-6" stop-color="#fff" offset="0"/> + <stop id="stop6593-1" stop-color="#fff" stop-opacity="0" offset="1"/> + </linearGradient> + <filter id="filter7286"> + <feGaussianBlur id="feGaussianBlur7288" stdDeviation="4.2868936"/> + </filter> + <clipPath id="clipPath5466-2-3" clipPathUnits="userSpaceOnUse"> + <path id="path5468-3-2" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5383-0-0" clipPathUnits="userSpaceOnUse"> + <path id="path5385-7-8" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <clipPath id="clipPath5426-1-6" clipPathUnits="userSpaceOnUse"> + <path id="path5428-0-9" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + </clipPath> + <linearGradient id="linearGradient5168-2-9" y2="-213.25" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="translate(0,192)" y1="72.064" x1="210.17"> + <stop id="stop4682-27-3" offset="0"/> + <stop id="stop4684-36-5" stop-opacity="0" offset="1"/> + </linearGradient> + <clipPath id="clipPath8617" clipPathUnits="userSpaceOnUse"> + <path id="path8619" d="m123.62 141.06c20.832 20.243 54.607 19.289 75.439-2.132s20.832-55.196 0-75.439-54.607-19.289-75.439 2.132-20.832 55.196 0 75.439z" fill="url(#radialGradient8621)"/> + </clipPath> + <radialGradient id="radialGradient8621" gradientUnits="userSpaceOnUse" cy="86" cx="128" gradientTransform="matrix(.80254 .77986 .80254 -.82522 -10.402 73.423)" r="47"> + <stop id="stop5747-3-73" stop-color="#d0e9f2" stop-opacity="0" offset="0"/> + <stop id="stop5753-6-08" stop-color="#d0e9f2" stop-opacity="0" offset=".83933"/> + <stop id="stop5755-9-5" stop-color="#d0e9f2" stop-opacity=".28185" offset=".94309"/> + <stop id="stop5749-0-4" stop-color="#d0e9f2" offset="1"/> + </radialGradient> + <filter id="filter8661"> + <feGaussianBlur id="feGaussianBlur8663" stdDeviation="6.3109704"/> + </filter> + <filter id="filter8725"> + <feGaussianBlur id="feGaussianBlur8727" stdDeviation="4.4575"/> + </filter> + <linearGradient id="linearGradient8735" y2="4.302" gradientUnits="userSpaceOnUse" x2="122" y1="245.45" x1="122"> + <stop id="stop8731" offset="0"/> + <stop id="stop8733" stop-opacity="0" offset="1"/> + </linearGradient> + <clipPath id="clipPath8750" clipPathUnits="userSpaceOnUse"> + <path id="path8752" opacity=".039130" d="m9 22.578s7.5 12.393 11.75 26.8c4.25 14.406 6.25 24.995 6.25 24.995s-5.5 13.195-8.25 25.417c-2.75 12.22-5.75 23.46-5.75 23.46s5.75 15.535 9.25 29.252 3.75 23.947 3.75 23.947-4 10.574-7.5 24.857-5 31.154-5 31.154 9.25-2.7481 28.5-1.055 32.25 3.3917 32.25 3.3917 12.75-3.7812 24-8.1911 16.25-7.8143 16.25-7.8143 5.5 0.0552 22.5 4.4302c17 4.3751 29.25 6.1343 29.25 6.1343s13-3.8014 26-7.8528 26.5-10.143 26.5-10.143-0.75-4.9393 4.25-24.844c5-19.904 8.75-28.708 8.75-28.708s-0.5145-4.4553-3.75-19.447c-1.75-8.1085-2.25-4.068-2.25-4.068s16.264-26.155 16.5-40.334c0.25-15.02-7.25-36.413-7.25-36.413s-4.75-14.866-7.5-29.143c-2.75-14.278-8.25-25.083-8.25-25.083s-24.25 10.961-31.75 13.068c-7.5 2.1066-21 6.9484-21 6.9484s-9.75-3.4614-22-6.7207c-12.25-3.2592-29.75-3.0939-29.75-3.0939s-3.25 3.7629-22 9.7793c-18.75 6.0165-27.5 7.9741-27.5 7.9741s-18.5-7.5038-31.5-8.9524-24-0.05894-24.75 0.25172z" fill="url(#linearGradient8754)"/> + </clipPath> + <linearGradient id="linearGradient8754" y2="-213.25" gradientUnits="userSpaceOnUse" x2="9" gradientTransform="matrix(1 -.080878 0 1 0 203.06)" y1="72.064" x1="210.17"> + <stop id="stop4682-9" offset="0"/> + <stop id="stop4684-38" stop-opacity="0" offset="1"/> + </linearGradient> + </defs> + <metadata id="metadata3043"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title/> + </cc:Work> + </rdf:RDF> + </metadata> + <g id="layer8"> + <g id="g8737" transform="translate(0,-10)"> + <path id="path5604-26-0-3" opacity=".7" d="m174.28 35.875c-17.6 0-35.19 6.639-48.72 19.906-0.16 0.164-0.33 0.303-0.5 0.469-22.05 22.056-26.206 55.25-12.47 81.5l-2.28 1.63c2.25 4.23 4.94 8.3 8.1 12.12l-13.32 13.34c-1.34-0.58-2.78-1.03-4.56-1.37l-2.842 2.84c-1.11-0.48-2.139-0.81-3.063-0.87l-64.125 64.12c-0.037 1.1 0.226 2.19 0.656 3.28l-0.531 0.54-1.094 1.09c0.716 3.74 2.011 6.82 5.469 10.28s6.42 4.63 10.281 5.47l1.094-1.1 0.719-0.71c1.088 0.46 2.13 0.78 3.094 0.84l64.122-64.13c-0.24-0.97-0.62-1.93-1.03-2.9l3-3c-0.25-1.73-0.68-3.2-1.31-4.6l13.28-13.28c3.82 3.16 7.89 5.85 12.13 8.1l1.62-2.28c26.25 13.74 59.44 9.58 81.5-12.47 0.17-0.17 0.31-0.34 0.47-0.5 26.69-27.22 26.55-70.923-0.47-97.94-13.59-13.59-31.41-20.375-49.22-20.375zm-0.5 3.281c0.11 0.002 0.21-0.002 0.31 0 0.95 0.019 1.9 0.066 2.85 0.125 0.96 0.061 1.92 0.148 2.87 0.25 0.1 0.01 0.19 0.021 0.28 0.031 0.1 0.011 0.19 0.021 0.29 0.032 0.14 0.017 0.29 0.044 0.43 0.062 0.9 0.11 1.8 0.228 2.69 0.375 0.62 0.102 1.23 0.224 1.84 0.344 0.35 0.066 0.69 0.116 1.04 0.187 0.72 0.153 1.43 0.324 2.15 0.5 0.31 0.077 0.63 0.138 0.94 0.219 0.07 0.019 0.14 0.043 0.22 0.063 0.95 0.253 1.89 0.516 2.84 0.812 0.07 0.023 0.15 0.04 0.22 0.063 0.95 0.3 1.91 0.625 2.84 0.969 0.06 0.019 0.11 0.042 0.16 0.062 0.95 0.352 1.9 0.728 2.84 1.125 0.06 0.022 0.11 0.041 0.16 0.063 0.94 0.4 1.88 0.836 2.81 1.281 0.04 0.02 0.09 0.042 0.13 0.062 0.93 0.451 1.86 0.91 2.78 1.407 0.03 0.017 0.06 0.044 0.09 0.062 0.93 0.503 1.84 1.013 2.75 1.562 0.03 0.02 0.06 0.044 0.1 0.063 0.9 0.551 1.8 1.122 2.68 1.719 0.55 0.369 1.09 0.769 1.63 1.156 0.36 0.261 0.73 0.512 1.09 0.781 0.02 0.014 0.05 0.018 0.06 0.031 0.88 0.656 1.75 1.36 2.6 2.063 1.74 1.434 3.43 2.963 5.06 4.594 1.62 1.62 3.14 3.3 4.56 5.031 0.01 0.011 0.03 0.02 0.03 0.031 0.71 0.855 1.41 1.715 2.07 2.594 0.28 0.379 0.54 0.773 0.81 1.156 0.37 0.517 0.74 1.038 1.09 1.563 0.02 0.024 0.05 0.038 0.07 0.062 0.59 0.89 1.16 1.778 1.71 2.688 0.02 0.032 0.05 0.061 0.07 0.094 0.54 0.902 1.06 1.829 1.56 2.75 0.02 0.032 0.04 0.06 0.06 0.093 0.5 0.921 0.96 1.844 1.41 2.781l0.06 0.126c0.45 0.929 0.88 1.868 1.28 2.812 0.02 0.051 0.04 0.105 0.06 0.156 0.4 0.936 0.78 1.895 1.13 2.844 0.02 0.053 0.04 0.104 0.06 0.156 0.35 0.949 0.67 1.885 0.97 2.844 0.02 0.072 0.04 0.147 0.06 0.219 0.3 0.941 0.56 1.894 0.82 2.843 0.02 0.074 0.04 0.146 0.06 0.219 0.08 0.31 0.14 0.627 0.22 0.938 0.17 0.72 0.35 1.432 0.5 2.156 0.07 0.342 0.12 0.688 0.18 1.031 0.12 0.617 0.25 1.225 0.35 1.844 0.15 0.893 0.26 1.791 0.37 2.688 0.02 0.145 0.05 0.291 0.07 0.437 0.01 0.093 0.02 0.188 0.03 0.281 0.01 0.094 0.02 0.187 0.03 0.282 0.1 0.952 0.19 1.912 0.25 2.872 0.06 0.94 0.11 1.9 0.12 2.85 0.01 0.1 0 0.2 0 0.31 0.02 1.05 0.01 2.1-0.03 3.15-0.03 0.94-0.08 1.86-0.15 2.79-0.01 0.12-0.02 0.25-0.04 0.37-0.07 0.92-0.16 1.84-0.28 2.75-0.12 0.96-0.27 1.93-0.43 2.88-0.02 0.08-0.02 0.16-0.04 0.25-0.02 0.12-0.03 0.25-0.06 0.37-0.16 0.91-0.36 1.82-0.56 2.72-0.03 0.13-0.06 0.27-0.09 0.41-0.21 0.88-0.45 1.77-0.69 2.65-0.17 0.59-0.35 1.17-0.53 1.75-0.18 0.57-0.34 1.13-0.53 1.69-0.3 0.86-0.61 1.71-0.94 2.56-0.06 0.16-0.13 0.32-0.19 0.47-0.04 0.11-0.08 0.23-0.12 0.34-0.36 0.88-0.73 1.73-1.13 2.6-0.38 0.82-0.77 1.63-1.19 2.44-0.08 0.15-0.16 0.31-0.25 0.46-0.41 0.8-0.83 1.6-1.28 2.38-0.09 0.17-0.18 0.34-0.28 0.5-0.2 0.34-0.42 0.66-0.62 1-0.37 0.59-0.75 1.17-1.13 1.75 0 0.01 0.01 0.02 0 0.03-0.49 0.75-1 1.49-1.53 2.22-0.46 0.64-0.95 1.25-1.44 1.87-0.19 0.26-0.36 0.53-0.56 0.79-0.13 0.16-0.27 0.33-0.41 0.5-0.16 0.2-0.33 0.39-0.5 0.59-0.55 0.67-1.13 1.32-1.72 1.97-0.6 0.67-1.23 1.35-1.87 2-0.16 0.16-0.31 0.34-0.47 0.5-21.13 21.13-52.26 24.49-77.19 11.15l0.13-0.18c-3.71-1.9-7.26-4.14-10.63-6.78-0.54-0.43-1.06-0.87-1.59-1.32-0.51-0.43-1.03-0.86-1.53-1.31-0.09-0.08-0.19-0.16-0.28-0.25-0.82-0.75-1.61-1.52-2.41-2.31-0.79-0.8-1.56-1.59-2.31-2.41-0.09-0.09-0.17-0.19-0.25-0.28-0.45-0.5-0.88-1.02-1.31-1.53-0.45-0.53-0.89-1.05-1.32-1.59-2.64-3.37-4.88-6.92-6.78-10.63l-0.19 0.13c-13.33-24.93-9.97-56.061 11.16-77.191 0.16-0.163 0.34-0.308 0.5-0.469 0.65-0.64 1.33-1.269 2-1.875 0.65-0.588 1.3-1.162 1.97-1.719 0.27-0.227 0.54-0.465 0.81-0.687 0.35-0.278 0.72-0.512 1.06-0.782 0.63-0.483 1.24-0.98 1.88-1.437 0.74-0.53 1.5-1.036 2.25-1.531 0.58-0.383 1.16-0.764 1.75-1.125 0.45-0.274 0.89-0.551 1.34-0.813 0.69-0.395 1.37-0.757 2.07-1.125 0.17-0.093 0.35-0.189 0.53-0.281 0.94-0.491 1.88-0.966 2.84-1.406 0.87-0.397 1.72-0.769 2.59-1.125 0.16-0.062 0.32-0.096 0.47-0.157 0.97-0.384 1.93-0.758 2.91-1.093 0.56-0.192 1.12-0.356 1.69-0.532 0.58-0.181 1.16-0.367 1.75-0.531 0.88-0.246 1.77-0.48 2.65-0.687 0.07-0.017 0.15-0.015 0.22-0.032 0.42-0.095 0.84-0.193 1.25-0.281 0.67-0.141 1.36-0.287 2.03-0.406 0.09-0.015 0.17-0.017 0.25-0.031 0.95-0.164 1.92-0.317 2.88-0.438 1.96-0.247 3.93-0.401 5.9-0.469 1.06-0.035 2.11-0.046 3.16-0.031z" transform="matrix(1 .068641 0 .84870 -6.6011e-8 36.913)" filter="url(#filter8661)" fill="#2d3335"/> + <path id="path3834-49-7" opacity=".5" d="m9 17.25s7.5 11 11.75 25.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 25-5.75 25 5.75 16 9.25 30 3.75 22.25 3.75 22.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-2.5-3.75-17.75-10-29.75-10-29.75 1.75-12.5 6.75-25.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-23.75-8.25-23.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" transform="matrix(1 0 0 .84657 0 37.66)" filter="url(#filter8725)" fill="url(#linearGradient8735)"/> + </g> + </g> + <g id="layer4"> + <path id="path3834-9" fill="#ceeeab" d="m9 2.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + <g id="g5438" transform="translate(0,-10)" clip-path="url(#clipPath5466)"> + <path id="path5436" fill="#a6dd8b" d="m110.75 5.5l-4.25 7c-0.75 9-2.25 13.75-8.5 16.5s-12.25 3.5-11 7.5 13 9.25 14.25 13 8.25 1.75 11 7 2 15.25-3.75 17.25-17.5 0.5-20.25 9.5-4.75 10.5-9 12.75-7.25 10.5-3.5 16.5 12.25-1.25 15-6.5 7.25-8.75 7.25-8.75h23.75l59-1.75 3.25-3.75s3.25 4 2.75 8.75-3.75 14.75 0.25 17.25 19.5-2 24-7-4.75-28.25-10.5-29.5-18.5-1.75-17-7 11.75 4.5 17.25 3.25 16.75-21 12-25.25-24.25-5.25-25.75-8 21-8 22.25-11-2.5-7.25-6.25-8.5-14 16.25-21 15.75-20 5.75-17.25 11.5-6 11-14.5 6.5-24.75-13-21.75-24 21.5-18.75 21.5-18.75l-39.25-10.25zm-13.562 107.22c-1.595 0.15-4.469 4.69-4.938 7.03-0.5 2.5-3.25 6.75-3.5 12.25s4.75 6.75 8.75 6.5 2.75-6.75 2-15c-0.25 0-0.5-10.25-2-10.75-0.094-0.03-0.206-0.04-0.312-0.03zm92.722 51.66c-6.34 0.29-6.63 7.46-7.41 8.87-1.25 2.25 2.25 13.75 2 18s-4.75 5.25-9.5 9.75 0.5 16 11.25 31l44.75 1.25-1-35s4.75-4.25-20.75-24.25c-9.56-7.5-15.54-9.8-19.34-9.62zm-149.97 16.53c-4.03-0.11-8.282 5.71-9.688 7.59-1.5 2-6.25 5-17 9.5l-14.5 34.25 53 4.25s1.75-11-4.25-15.75-17.25-5.75-18.25-13.25 9.25-10 13.75-14.25 2-11.25-2.25-12.25c-0.266-0.06-0.544-0.09-0.812-0.09z"/> + </g> + <path id="path5280" fill="#aac3e7" d="m158.53 75.344c-4.76-0.015-9.03 0.968-11.53 3.156-8 7-35 0.75-48.5 7s-13.25 38-14.75 44.5-17.5 20.75-20 23.5-13.25 7.25-19.5 8.5-12.75 7.25-15.5 11c-2.021 2.76-7.406 6.45-10.125 8.22-0.046 0.18-0.079 0.35-0.125 0.53-0.134 0.53-0.247 1.08-0.375 1.63 4.98-1.61 11.18-8.18 16.625-13.63 6.25-6.25 20-7.75 27.75-11.5s14.25-19.75 26.5-23.75 21.25 11.75 24.25 18.5 1.75 12.75 3.75 17 11 11.75 11.5 13.5-5 6.5-6.25 8.5-10.5 7-11.75 8.75c-0.97 1.35-1.92 6.77-2.31 9.22 0.41-0.17 0.75-0.31 1.12-0.47 0.49-2.53 1.52-7.08 2.94-8.5 2-2 11.25-4.5 12.5-8.5s7-6.5 7-6.5 2.75 4 16 14c8.83 6.67 12.76 15.53 14.41 20.72 0.67 0.17 1.53 0.41 2.03 0.53-1.22-4.32-4.84-16.24-8.94-20.75-5-5.5-18.5-10.75-22.75-22s-24.5-34.25-17.5-40.25 16.5-4 28.5 7.5 46.25 5.75 57.75 3.75c9.95-1.73 20.83 14.88 23.91 26.03 0.59-2.09 1.12-4 1.65-5.75-1.74-1.92-3.69-4.62-5.31-8.28-3.75-8.5-12-13.25-12-13.25s8.75-5 14.75-7.75c1.62-0.74 3.01-1.68 4.19-2.66-0.16-0.77-0.26-1.25-0.44-2.09-0.03-0.15-0.06-0.29-0.09-0.44-4.77 5.56-19.24 9.62-21.66 10.94-2.75 1.5-18.25 3-35.75 4.5s-26.75-7.5-34.25-14.75-13-36-3-38 20 13.75 30 17 21.5-15.75 19.75-27c-1.2-7.734-14-12.625-24.47-12.656zm-53.34 13.281c1.27 0.001 5.86 1.594 6.56 2.375 2.25 2.5 2 7.25 0 8s-12.75 8-10.5 14.25 1.75 18-3.5 18-8 0-10-2.5-2-12 0-19.75 3.5-15 8-18.25c3.094-2.234 6.63-2.128 9.44-2.125zm13.59 73.095c0.2 0.01 1.91 3.51 4.72 7.03 3 3.75 3.25 8.25 3.25 8.25s-4.25-4.75-6-8-2-7.25-2-7.25c0-0.03 0.02-0.03 0.03-0.03z"/> + <path id="path5319" opacity=".38696" stroke-linejoin="round" d="m122.75 62.25c6.25 0.5 12.25-2.25 10.75-6.5s-12.5-7.25-13.25-3 2 10.5 2.5 9.5z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <path id="path5321" opacity=".38696" stroke-linejoin="round" d="m108.75 46.75c-8.5-5.5-8.5-7.25-7-8s10.25 5 12.75 8-2.25 2-5.75 0z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <g id="g5373" clip-path="url(#clipPath5383)" transform="translate(0,-10)" stroke="#6d7f42" fill="none"> + <path id="path5323" opacity=".38696" stroke-linejoin="round" d="m15.75 151.25c33-2.5 38.25-3.5 36.25-10.25s-8.75-23.5-23-22.5-22.75-6.75-22.75-6.75" stroke-linecap="round"/> + <path id="path5311" opacity=".38696" d="m17.5 177.25c18.25-10 28.75-8.5 35-11.5s13.25-5.75 15.75-9.5 5.75-11.5 5.75-18-3.5-36 3.25-43.5 17.25-26 26-23.25 12.25 9.75 22 9.5 21.75-4 24.25-12.25-15.75-16-16-23 5.5-14.25 20.25-17 23.5-11.5 23.5-11.5"/> + <path id="path5313" opacity=".38696" stroke-linejoin="round" d="m14.5 161c15.25-1.5 22.25 3.5 31.5 1.75s13.25-3 17.75-5.75 6-3.75 6.25-6.5 1-12.5-3-22-12.5-31.5-8.25-38.75 5.25-21.5 15.75-24.5 21-6.25 27.75-1.25 12.75 14.25 20 14.5 11.75-1.5 14.5-4.5 4.5-10.25 1.75-13.75-15.5-5.5-17.25-9.5-10.75-17-0.25-26.75 36.25-8.25 36.25-8.25" stroke-linecap="round"/> + <path id="path5315" opacity=".38696" stroke-linejoin="round" d="m21.25 159c13.75 1 21.5 4.25 33.5-0.5s13.5-5.25 13.75-8.75-0.25-15.75-3-20-13-13.75-15.75-24.25 0.25-41 8.5-48.25 32-7.25 37.5-10.5 5.25-16.75 13-24.5 27-12.25 27-12.25" stroke-linecap="round"/> + <path id="path5317" opacity=".38696" stroke-linejoin="round" d="m190 18.5c11.75 5 39 9.75 47.25 40.25" stroke-linecap="round"/> + <path id="path5325" opacity=".38696" stroke-linejoin="round" d="m9.75 214c19-12.5 36-1.25 49-4s38.25-37.25 46-37 5.5-11.75 8.5-13.25 5.5 6 11.75 8 24.5-2.75 23.5-5.75-7-7.75-5.5-8.5 8.5 5 12.75 3.5 43.75-1 48.5-13.5 21.5-13.5 21.5-13.5" stroke-linecap="round"/> + <path id="path5327" opacity=".38696" stroke-linejoin="round" d="m77.5 233.5c13.5-11.5 23.25-25 28.5-27s12.75-3.75 15.75-8 2.5-10.75 5.25-12 3.75 5.75 8.75 6 36.75-5 42.75-11.75 32.25-12.5 32.5-14.5-1-4.75 0.25-5.5 24.75-6 24.75-6" stroke-linecap="round"/> + <path id="path5329" opacity=".38696" stroke-linejoin="round" d="m168.75 236c9-13.75 20.5-41 29.5-42s10.25-2.5 12.5-4.25 17 2.25 17 2.25" stroke-linecap="round"/> + </g> + <g id="g5400" clip-path="url(#clipPath5426)" transform="translate(0,-10)" stroke="#d38484" stroke-linecap="round" stroke-width="2" fill="none"> + <path id="path5387" d="m57.75 20l-8.5 28.25 18 6.25 7.75 36.25-21 22.25 9 10.5-12 11.5 0.5 4.5 20.25 24.5 14-6.75 20.5 18.5-10.5 28.25 10.25 8.5-2.75 13"/> + <path id="path5389" d="m105.75 212.25l12.5-27.75 11-7 27.5 15.75 20.5-3.75-0.25-15.75-10.25-6 12.75-26.25 5.75-3.75 38.75-10"/> + </g> + </g> + <g id="layer1" transform="translate(0,192)"> + <g id="g4199" opacity=".50435" transform="translate(0,320)"> + <path id="path3834-4" d="m219.25 10s-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75c0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.125 48.971-4 52.25 12.031c10.38-4.418 52.11-4.9 55.31-13.156 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z" transform="translate(0,-192)" fill="#b1e479"/> + <path id="path3834-7-2" d="m27 65.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.969 16.37 53.721-15.74 52.25 17.53c16.36-4.26 32.39-9.12 48.06-15.41 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75c-3.2 8.256-44.93 8.738-55.31 13.156l-52.25-12.031-47.971 4-52.469-5.125z" transform="translate(0,-192)" fill="#87d531"/> + <path id="path3834-7-26" d="m231.75 165.5c-17.9 7.67-35.94 14.9-54.31 21.41l-52.25-18.53-50.221 9-48.969-9.88s-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z" transform="translate(0,-192)" fill="#ceeeab"/> + <path id="path3834-7-26-0" d="m13 113.25s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.88 50.221-9 52.25 18.53c18.37-6.51 36.41-13.74 54.31-21.41 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75c-15.67 6.29-31.7 11.15-48.06 15.41l-52.25-17.53-53.721 15.74-50.969-16.37z" transform="translate(0,-192)" fill="#b9e787"/> + </g> + <g id="g4205" opacity=".52174" transform="translate(0,140)"> + <path id="path3834-2" d="m13.719 0.03125c-2.729-0.007-4.4378 0.125-4.719 0.21875 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6l1.5-53.25-12.25-46.5 16-59.75c-2.22-15.48-9.068-30.046-14.25-44.75 0 0-18.5-9-31.5-11.5-8.125-1.5625-15.483-1.9565-20.031-1.9688z" fill="#83d32b"/> + <path id="path3834-6-2" d="m114.75-0.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.704 12.03 29.27 14.25 44.75l-16 59.75 12.25 46.5-1.5 53.25s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.25-48.5-8.25-54.25 11.75-45c-3.44-9.727-8.06-56.93-14.5-57.5z" fill="#b1e479"/> + <path id="path3834-6-6" d="m219.25-2s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.358 11.44 45.392 14.25 52.25l-11.25 53.25 9.5 55-12.75 45.5s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75z" fill="#a4df62"/> + <path id="path3834-6-6-9" d="m114.75-0.25c6.44 0.57024 11.06 47.773 14.5 57.5l-11.75 45 8.25 53.25-11.25 49.5s5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5l12.75-45.5-9.5-55 11.25-53.25c-2.81-6.858-9.33-53.608-14.25-52.25 0 0-9.75-4.25-22-8.5s-29.75-5.5-29.75-5.5z" fill="#ceeeab"/> + </g> + <path id="path3834-49" opacity=".039130" d="m9-189.75s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" fill="url(#linearGradient5168)"/> + </g> + <g id="layer3"> + <g id="g4808" opacity=".26957" transform="translate(0,182)"> + <path id="path3834-4-9" fill="url(#linearGradient4806-9)" d="m219.25-182s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.36 11.44 45.39 14.25 52.25l-0.06 0.28c11.81-4.07 51.21-4.77 54.31-12.78 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z"/> + <path id="path3834-7-2-4-9" fill="url(#linearGradient4790-3)" d="m27-126.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.625 16.281 15.781-58.911-52.406-5.12z"/> + <path id="path3834-7-26-9-7" fill="url(#linearGradient4758-2)" d="m26-24.5s-4 10.25-7.5 24.25-5 30.75-5 30.75 0.147-0.045 0.438-0.094c2.033-0.338 11.218-1.5 28.062 1.344 19.25 3.25 32.25 6 32.25 6l1.469-52.5-0.75 0.125-48.969-9.875z"/> + <path id="path3834-4-9-6" fill="url(#linearGradient4750-9)" d="m114.75-180.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.7 12.03 29.27 14.25 44.75l-0.094 0.31 48.034-3.94 1.12 0.26c-3.36-13.33-7.79-54.6-13.81-55.13z"/> + <path id="path3834-7-26-0-0-9" fill="url(#linearGradient4782-5)" d="m117.59-78.094l-53.621 15.719-0.344-0.094-0.125 0.469 12.25 46.5-0.031 0.75 49.471-8.875 0.53 0.187 0.03-0.062-8.25-54.25 0.09-0.344z"/> + <path id="path3834-7-2-4-3" fill="url(#linearGradient4798-4)" d="m128.56-125.12c0.24 0.92 0.47 1.74 0.69 2.37l-11.66 44.656 0.1-0.031 51.81 17.375 11.19-52.97c-0.36 0.12-0.7 0.25-1 0.38l-51.13-11.78z"/> + <path id="path3834-7-26-9-85" fill="url(#linearGradient4766-3)" d="m125.53-23.5l-11.03 48.5s5.5 0.5 22.5 6.25c2.12 0.719 4.16 1.406 6.12 2.031 1.97 0.626 3.86 1.186 5.63 1.719 10.62 3.199 17.5 4.75 17.5 4.75l12.72-45.406c-0.51 0.1824-1.02 0.3808-1.53 0.5622l-51.91-18.406z"/> + <path id="path3834-7-26-0-0-3" fill="url(#linearGradient4965)" d="m218-76c-15.67 6.288-31.7 11.15-48.06 15.406l-0.44-0.156 9.5 55-0.03 0.0937c17.84-6.3597 35.38-13.387 52.78-20.844 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75z"/> + </g> + <g id="g4818" opacity=".043478" transform="translate(0,182)"> + <path id="path3834-4-9-1" fill="url(#linearGradient4686-3)" d="m13.719-179.97c-1.106 0-1.972 0.03-2.719 0.06-0.445 0.02-0.855 0.04-1.1562 0.07-0.0293 0-0.066-0.01-0.0938 0-0.3979 0.03-0.6562 0.06-0.75 0.09 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.12 0.937-0.06 0.094-0.31c-2.22-15.48-9.068-30.05-14.25-44.75 0 0-18.5-9-31.5-11.5-1.018-0.2-2.01-0.37-3-0.53-0.596-0.1-1.167-0.2-1.75-0.28-0.237-0.04-0.453-0.06-0.688-0.1-1.306-0.18-2.588-0.34-3.812-0.46-0.735-0.08-1.395-0.13-2.094-0.19-0.685-0.06-1.353-0.11-2-0.16-0.992-0.07-1.89-0.12-2.781-0.15-1.456-0.07-2.769-0.1-3.906-0.1z"/> + <path id="path3834-7-26-0-0-7" fill="url(#linearGradient4742-3)" d="m13-78.75s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.875 0.75-0.125 0.031-0.75-12.25-46.5 0.125-0.469-50.625-16.281z"/> + <path id="path3834-7-2-4-6" fill="url(#linearGradient4734-3)" d="m127.44-125.38l-47.971 4h-0.063l-15.781 58.911 0.344 0.094 53.621-15.719 11.66-44.656c-0.22-0.63-0.45-1.45-0.69-2.37l-1.12-0.26z"/> + <path id="path3834-7-26-9-8" fill="url(#linearGradient4726-9)" d="m125.19-23.625l-49.471 8.875-1.469 52.5s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.22-48.438-0.53-0.187z"/> + <path id="path3834-4-9-2" fill="url(#linearGradient4710-2)" d="m114.75-180.25c6.02 0.53 10.45 41.8 13.81 55.13l51.13 11.78c0.3-0.13 0.64-0.26 1-0.38l0.06-0.28c-2.81-6.86-9.33-53.61-14.25-52.25 0 0-0.61-0.25-1.72-0.72-3.32-1.39-11.09-4.59-20.28-7.78-12.25-4.25-29.75-5.5-29.75-5.5z"/> + <path id="path3834-7-26-0-0-0" fill="url(#linearGradient4718-4)" d="m117.69-78.125l-0.1 0.031-0.09 0.344 8.25 53.25-0.22 1 51.91 18.406c0.51-0.1813 1.02-0.3797 1.53-0.5623l0.03-0.0937-9.5-55-51.81-17.375z"/> + <path id="path3834-7-26-9-9" fill="url(#linearGradient4694-4)" d="m231.75-26.5c-17.4 7.457-34.94 14.484-52.78 20.844l-12.72 45.406s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z"/> + <path id="path3834-7-2-4-5" fill="url(#linearGradient4702-4)" d="m235-126.5c-3.1 8.01-42.5 8.71-54.31 12.78l-11.19 52.97 0.44 0.156c16.36-4.256 32.39-9.118 48.06-15.406 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75z"/> + </g> + </g> + <g id="layer7"> + <g id="g8102" clip-path="url(#clipPath8617)" transform="matrix(1.2525 .035398 0 1.2525 -27.809 -48.344)"> + <path id="path3834-9-1" fill="#ceeeab" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z"/> + <g id="g5438-0" clip-path="url(#clipPath5466-2-3)"> + <path id="path5436-7" fill="#a6dd8b" d="m110.75 5.5l-4.25 7c-0.75 9-2.25 13.75-8.5 16.5s-12.25 3.5-11 7.5 13 9.25 14.25 13 8.25 1.75 11 7 2 15.25-3.75 17.25-17.5 0.5-20.25 9.5-4.75 10.5-9 12.75-7.25 10.5-3.5 16.5 12.25-1.25 15-6.5 7.25-8.75 7.25-8.75h23.75l59-1.75 3.25-3.75s3.25 4 2.75 8.75-3.75 14.75 0.25 17.25 19.5-2 24-7-4.75-28.25-10.5-29.5-18.5-1.75-17-7 11.75 4.5 17.25 3.25 16.75-21 12-25.25-24.25-5.25-25.75-8 21-8 22.25-11-2.5-7.25-6.25-8.5-14 16.25-21 15.75-20 5.75-17.25 11.5-6 11-14.5 6.5-24.75-13-21.75-24 21.5-18.75 21.5-18.75l-39.25-10.25zm-13.562 107.22c-1.595 0.15-4.469 4.69-4.938 7.03-0.5 2.5-3.25 6.75-3.5 12.25s4.75 6.75 8.75 6.5 2.75-6.75 2-15c-0.25 0-0.5-10.25-2-10.75-0.094-0.03-0.206-0.04-0.312-0.03zm92.722 51.66c-6.34 0.29-6.63 7.46-7.41 8.87-1.25 2.25 2.25 13.75 2 18s-4.75 5.25-9.5 9.75 0.5 16 11.25 31l44.75 1.25-1-35s4.75-4.25-20.75-24.25c-9.56-7.5-15.54-9.8-19.34-9.62zm-149.97 16.53c-4.03-0.11-8.282 5.71-9.688 7.59-1.5 2-6.25 5-17 9.5l-14.5 34.25 53 4.25s1.75-11-4.25-15.75-17.25-5.75-18.25-13.25 9.25-10 13.75-14.25 2-11.25-2.25-12.25c-0.266-0.06-0.544-0.09-0.812-0.09z"/> + </g> + <path id="path5280-4" fill="#aac3e7" d="m158.53 85.344c-4.76-0.015-9.03 0.968-11.53 3.156-8 7-35 0.75-48.5 7s-13.25 38-14.75 44.5-17.5 20.75-20 23.5-13.25 7.25-19.5 8.5-12.75 7.25-15.5 11c-2.021 2.76-7.406 6.45-10.125 8.22-0.046 0.18-0.079 0.35-0.125 0.53-0.134 0.53-0.247 1.08-0.375 1.63 4.98-1.61 11.18-8.18 16.625-13.63 6.25-6.25 20-7.75 27.75-11.5s14.25-19.75 26.5-23.75 21.25 11.75 24.25 18.5 1.75 12.75 3.75 17 11 11.75 11.5 13.5-5 6.5-6.25 8.5-10.5 7-11.75 8.75c-0.97 1.35-1.92 6.77-2.31 9.22 0.41-0.17 0.75-0.31 1.12-0.47 0.49-2.53 1.52-7.08 2.94-8.5 2-2 11.25-4.5 12.5-8.5s7-6.5 7-6.5 2.75 4 16 14c8.83 6.67 12.76 15.53 14.41 20.72 0.67 0.17 1.53 0.41 2.03 0.53-1.22-4.32-4.84-16.24-8.94-20.75-5-5.5-18.5-10.75-22.75-22s-24.5-34.25-17.5-40.25 16.5-4 28.5 7.5 46.25 5.75 57.75 3.75c9.95-1.73 20.83 14.88 23.91 26.03 0.59-2.09 1.12-4 1.65-5.75-1.74-1.92-3.69-4.62-5.31-8.28-3.75-8.5-12-13.25-12-13.25s8.75-5 14.75-7.75c1.62-0.74 3.01-1.68 4.19-2.66-0.16-0.77-0.26-1.25-0.44-2.09-0.03-0.15-0.06-0.29-0.09-0.44-4.77 5.56-19.24 9.62-21.66 10.94-2.75 1.5-18.25 3-35.75 4.5s-26.75-7.5-34.25-14.75-13-36-3-38 20 13.75 30 17 21.5-15.75 19.75-27c-1.2-7.734-14-12.625-24.47-12.656zm-53.34 13.281c1.27 0.001 5.86 1.595 6.56 2.375 2.25 2.5 2 7.25 0 8s-12.75 8-10.5 14.25 1.75 18-3.5 18-8 0-10-2.5-2-12 0-19.75 3.5-15 8-18.25c3.094-2.234 6.63-2.128 9.44-2.125zm13.59 73.095c0.2 0.01 1.91 3.51 4.72 7.03 3 3.75 3.25 8.25 3.25 8.25s-4.25-4.75-6-8-2-7.25-2-7.25c0-0.03 0.02-0.03 0.03-0.03z"/> + <path id="path5319-8" opacity=".38696" stroke-linejoin="round" d="m122.75 72.25c6.25 0.5 12.25-2.25 10.75-6.5s-12.5-7.25-13.25-3 2 10.5 2.5 9.5z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <path id="path5321-0" opacity=".38696" stroke-linejoin="round" d="m108.75 56.75c-8.5-5.5-8.5-7.25-7-8s10.25 5 12.75 8-2.25 2-5.75 0z" stroke="#6d7f42" stroke-linecap="round" fill="none"/> + <g id="g5373-1" stroke="#6d7f42" fill="none" clip-path="url(#clipPath5383-0-0)"> + <path id="path5323-8" opacity=".38696" stroke-linejoin="round" d="m15.75 151.25c33-2.5 38.25-3.5 36.25-10.25s-8.75-23.5-23-22.5-22.75-6.75-22.75-6.75" stroke-linecap="round"/> + <path id="path5311-7" opacity=".38696" d="m17.5 177.25c18.25-10 28.75-8.5 35-11.5s13.25-5.75 15.75-9.5 5.75-11.5 5.75-18-3.5-36 3.25-43.5 17.25-26 26-23.25 12.25 9.75 22 9.5 21.75-4 24.25-12.25-15.75-16-16-23 5.5-14.25 20.25-17 23.5-11.5 23.5-11.5"/> + <path id="path5313-3" opacity=".38696" stroke-linejoin="round" d="m14.5 161c15.25-1.5 22.25 3.5 31.5 1.75s13.25-3 17.75-5.75 6-3.75 6.25-6.5 1-12.5-3-22-12.5-31.5-8.25-38.75 5.25-21.5 15.75-24.5 21-6.25 27.75-1.25 12.75 14.25 20 14.5 11.75-1.5 14.5-4.5 4.5-10.25 1.75-13.75-15.5-5.5-17.25-9.5-10.75-17-0.25-26.75 36.25-8.25 36.25-8.25" stroke-linecap="round"/> + <path id="path5315-4" opacity=".38696" stroke-linejoin="round" d="m21.25 159c13.75 1 21.5 4.25 33.5-0.5s13.5-5.25 13.75-8.75-0.25-15.75-3-20-13-13.75-15.75-24.25 0.25-41 8.5-48.25 32-7.25 37.5-10.5 5.25-16.75 13-24.5 27-12.25 27-12.25" stroke-linecap="round"/> + <path id="path5317-7" opacity=".38696" stroke-linejoin="round" d="m190 18.5c11.75 5 39 9.75 47.25 40.25" stroke-linecap="round"/> + <path id="path5325-1" opacity=".38696" stroke-linejoin="round" d="m9.75 214c19-12.5 36-1.25 49-4s38.25-37.25 46-37 5.5-11.75 8.5-13.25 5.5 6 11.75 8 24.5-2.75 23.5-5.75-7-7.75-5.5-8.5 8.5 5 12.75 3.5 43.75-1 48.5-13.5 21.5-13.5 21.5-13.5" stroke-linecap="round"/> + <path id="path5327-3" opacity=".38696" stroke-linejoin="round" d="m77.5 233.5c13.5-11.5 23.25-25 28.5-27s12.75-3.75 15.75-8 2.5-10.75 5.25-12 3.75 5.75 8.75 6 36.75-5 42.75-11.75 32.25-12.5 32.5-14.5-1-4.75 0.25-5.5 24.75-6 24.75-6" stroke-linecap="round"/> + <path id="path5329-4" opacity=".38696" stroke-linejoin="round" d="m168.75 236c9-13.75 20.5-41 29.5-42s10.25-2.5 12.5-4.25 17 2.25 17 2.25" stroke-linecap="round"/> + </g> + <g id="g5400-4" clip-path="url(#clipPath5426-1-6)" stroke="#d38484" stroke-linecap="round" stroke-width="2" fill="none"> + <path id="path5387-2" d="m57.75 20l-8.5 28.25 18 6.25 7.75 36.25-21 22.25 9 10.5-12 11.5 0.5 4.5 20.25 24.5 14-6.75 20.5 18.5-10.5 28.25 10.25 8.5-2.75 13"/> + <path id="path5389-4" d="m105.75 212.25l12.5-27.75 11-7 27.5 15.75 20.5-3.75-0.25-15.75-10.25-6 12.75-26.25 5.75-3.75 38.75-10"/> + </g> + <path id="path3834-49-6" opacity=".039130" d="m9 12.25s7.5 13 11.75 27.75 6.25 25.5 6.25 25.5-5.5 12.75-8.25 24.75-5.75 23-5.75 23 5.75 16 9.25 30 3.75 24.25 3.75 24.25-4 10.25-7.5 24.25-5 30.75-5 30.75 9.25-2 28.5 1.25 32.25 6 32.25 6 12.75-2.75 24-6.25 16.25-6.5 16.25-6.5 5.5 0.5 22.5 6.25 29.25 8.5 29.25 8.5 13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28-0.5-4.5-3.75-19.75-10-29.75-10-29.75 1.75-10.5 6.75-23.75 10.25-26.75 10.25-26.75-4.75-15.25-7.5-29.75-8.25-25.75-8.25-25.75-24.25 9-31.75 10.5-21 5.25-21 5.25-9.75-4.25-22-8.5-29.75-5.5-29.75-5.5-3.25 3.5-22 8-27.5 5.75-27.5 5.75-18.5-9-31.5-11.5-24-2-24.75-1.75z" fill="url(#linearGradient5168-2-9)"/> + <g id="g4808-4" opacity=".26957" transform="translate(0,192)"> + <path id="path3834-4-9-9" fill="url(#linearGradient4806-9)" d="m219.25-182s-24.25 9-31.75 10.5-21 5.25-21 5.25c4.92-1.36 11.44 45.39 14.25 52.25l-0.06 0.28c11.81-4.07 51.21-4.77 54.31-12.78 0 0-4.75-15.25-7.5-29.75s-8.25-25.75-8.25-25.75z"/> + <path id="path3834-7-2-4-9-8" fill="url(#linearGradient4790-3)" d="m27-126.5s-5.5 12.75-8.25 24.75-5.75 23-5.75 23l50.625 16.281 15.781-58.911-52.406-5.12z"/> + <path id="path3834-7-26-9-7-4" fill="url(#linearGradient4758-2)" d="m26-24.5s-4 10.25-7.5 24.25-5 30.75-5 30.75 0.147-0.045 0.438-0.094c2.033-0.338 11.218-1.5 28.062 1.344 19.25 3.25 32.25 6 32.25 6l1.469-52.5-0.75 0.125-48.969-9.875z"/> + <path id="path3834-4-9-6-2" fill="url(#linearGradient4750-9)" d="m114.75-180.25s-3.25 3.5-22 8-27.5 5.75-27.5 5.75c5.182 14.7 12.03 29.27 14.25 44.75l-0.094 0.31 48.034-3.94 1.12 0.26c-3.36-13.33-7.79-54.6-13.81-55.13z"/> + <path id="path3834-7-26-0-0-9-5" fill="url(#linearGradient4782-5)" d="m117.59-78.094l-53.621 15.719-0.344-0.094-0.125 0.469 12.25 46.5-0.031 0.75 49.471-8.875 0.53 0.187 0.03-0.062-8.25-54.25 0.09-0.344z"/> + <path id="path3834-7-2-4-3-7" fill="url(#linearGradient4798-4)" d="m128.56-125.12c0.24 0.92 0.47 1.74 0.69 2.37l-11.66 44.656 0.1-0.031 51.81 17.375 11.19-52.97c-0.36 0.12-0.7 0.25-1 0.38l-51.13-11.78z"/> + <path id="path3834-7-26-9-85-2" fill="url(#linearGradient4766-3)" d="m125.53-23.5l-11.03 48.5s5.5 0.5 22.5 6.25c2.12 0.719 4.16 1.406 6.12 2.031 1.97 0.626 3.86 1.186 5.63 1.719 10.62 3.199 17.5 4.75 17.5 4.75l12.72-45.406c-0.51 0.1824-1.02 0.3808-1.53 0.5622l-51.91-18.406z"/> + <path id="path3834-7-26-0-0-3-7" fill="url(#linearGradient4965)" d="m218-76c-15.67 6.288-31.7 11.15-48.06 15.406l-0.44-0.156 9.5 55-0.03 0.0937c17.84-6.3597 35.38-13.387 52.78-20.844 0 0-0.5-4.5-3.75-19.75s-10-29.75-10-29.75z"/> + </g> + <g id="g4818-4" opacity=".043478" transform="translate(0,192)"> + <path id="path3834-4-9-1-4" fill="url(#linearGradient4686-3)" d="m13.719-179.97c-1.106 0-1.972 0.03-2.719 0.06-0.445 0.02-0.855 0.04-1.1562 0.07-0.0293 0-0.066-0.01-0.0938 0-0.3979 0.03-0.6562 0.06-0.75 0.09 0 0 7.5 13 11.75 27.75s6.25 25.5 6.25 25.5l51.469 5.12 0.937-0.06 0.094-0.31c-2.22-15.48-9.068-30.05-14.25-44.75 0 0-18.5-9-31.5-11.5-1.018-0.2-2.01-0.37-3-0.53-0.596-0.1-1.167-0.2-1.75-0.28-0.237-0.04-0.453-0.06-0.688-0.1-1.306-0.18-2.588-0.34-3.812-0.46-0.735-0.08-1.395-0.13-2.094-0.19-0.685-0.06-1.353-0.11-2-0.16-0.992-0.07-1.89-0.12-2.781-0.15-1.456-0.07-2.769-0.1-3.906-0.1z"/> + <path id="path3834-7-26-0-0-7-0" fill="url(#linearGradient4742-3)" d="m13-78.75s5.75 16 9.25 30 3.75 24.25 3.75 24.25l48.969 9.875 0.75-0.125 0.031-0.75-12.25-46.5 0.125-0.469-50.625-16.281z"/> + <path id="path3834-7-2-4-6-5" fill="url(#linearGradient4734-3)" d="m127.44-125.38l-47.971 4h-0.063l-15.781 58.911 0.344 0.094 53.621-15.719 11.66-44.656c-0.22-0.63-0.45-1.45-0.69-2.37l-1.12-0.26z"/> + <path id="path3834-7-26-9-8-6" fill="url(#linearGradient4726-9)" d="m125.19-23.625l-49.471 8.875-1.469 52.5s12.75-2.75 24-6.25 16.25-6.5 16.25-6.5l11.22-48.438-0.53-0.187z"/> + <path id="path3834-4-9-2-0" fill="url(#linearGradient4710-2)" d="m114.75-180.25c6.02 0.53 10.45 41.8 13.81 55.13l51.13 11.78c0.3-0.13 0.64-0.26 1-0.38l0.06-0.28c-2.81-6.86-9.33-53.61-14.25-52.25 0 0-0.61-0.25-1.72-0.72-3.32-1.39-11.09-4.59-20.28-7.78-12.25-4.25-29.75-5.5-29.75-5.5z"/> + <path id="path3834-7-26-0-0-0-0" fill="url(#linearGradient4718-4)" d="m117.69-78.125l-0.1 0.031-0.09 0.344 8.25 53.25-0.22 1 51.91 18.406c0.51-0.1813 1.02-0.3797 1.53-0.5623l0.03-0.0937-9.5-55-51.81-17.375z"/> + <path id="path3834-7-26-9-9-4" fill="url(#linearGradient4694-4)" d="m231.75-26.5c-17.4 7.457-34.94 14.484-52.78 20.844l-12.72 45.406s13-2.75 26-5.75 26.5-8 26.5-8-0.75-5 4.25-24.5 8.75-28 8.75-28z"/> + <path id="path3834-7-2-4-5-0" fill="url(#linearGradient4702-4)" d="m235-126.5c-3.1 8.01-42.5 8.71-54.31 12.78l-11.19 52.97 0.44 0.156c16.36-4.256 32.39-9.118 48.06-15.406 0 0 1.75-10.5 6.75-23.75s10.25-26.75 10.25-26.75z"/> + </g> + </g> + </g> + <g id="layer6"> + <path id="path5604-26-0" d="m174.28 35.875c-17.6 0-35.19 6.639-48.72 19.906-0.16 0.164-0.33 0.303-0.5 0.469-22.05 22.056-26.206 55.25-12.47 81.5l-2.28 1.63c2.25 4.23 4.94 8.3 8.1 12.12l-13.32 13.34c-1.34-0.58-2.78-1.03-4.56-1.37l-2.842 2.84c-1.11-0.48-2.139-0.81-3.063-0.87l-64.125 64.12c-0.037 1.1 0.226 2.19 0.656 3.28l-0.531 0.54-1.094 1.09c0.716 3.74 2.011 6.82 5.469 10.28s6.42 4.63 10.281 5.47l1.094-1.1 0.719-0.71c1.088 0.46 2.13 0.78 3.094 0.84l64.122-64.13c-0.24-0.97-0.62-1.93-1.03-2.9l3-3c-0.25-1.73-0.68-3.2-1.31-4.6l13.28-13.28c3.82 3.16 7.89 5.85 12.13 8.1l1.62-2.28c26.25 13.74 59.44 9.58 81.5-12.47 0.17-0.17 0.31-0.34 0.47-0.5 26.69-27.22 26.55-70.923-0.47-97.94-13.59-13.59-31.41-20.375-49.22-20.375zm-0.5 3.281c0.11 0.002 0.21-0.002 0.31 0 0.95 0.019 1.9 0.066 2.85 0.125 0.96 0.061 1.92 0.148 2.87 0.25 0.1 0.01 0.19 0.021 0.28 0.031 0.1 0.011 0.19 0.021 0.29 0.032 0.14 0.017 0.29 0.044 0.43 0.062 0.9 0.11 1.8 0.228 2.69 0.375 0.62 0.102 1.23 0.224 1.84 0.344 0.35 0.066 0.69 0.116 1.04 0.187 0.72 0.153 1.43 0.324 2.15 0.5 0.31 0.077 0.63 0.138 0.94 0.219 0.07 0.019 0.14 0.043 0.22 0.063 0.95 0.253 1.89 0.516 2.84 0.812 0.07 0.023 0.15 0.04 0.22 0.063 0.95 0.3 1.91 0.625 2.84 0.969 0.06 0.019 0.11 0.042 0.16 0.062 0.95 0.352 1.9 0.728 2.84 1.125 0.06 0.022 0.11 0.041 0.16 0.063 0.94 0.4 1.88 0.836 2.81 1.281 0.04 0.02 0.09 0.042 0.13 0.062 0.93 0.451 1.86 0.91 2.78 1.407 0.03 0.017 0.06 0.044 0.09 0.062 0.93 0.503 1.84 1.013 2.75 1.562 0.03 0.02 0.06 0.044 0.1 0.063 0.9 0.551 1.8 1.122 2.68 1.719 0.55 0.369 1.09 0.769 1.63 1.156 0.36 0.261 0.73 0.512 1.09 0.781 0.02 0.014 0.05 0.018 0.06 0.031 0.88 0.656 1.75 1.36 2.6 2.063 1.74 1.434 3.43 2.963 5.06 4.594 1.62 1.62 3.14 3.3 4.56 5.031 0.01 0.011 0.03 0.02 0.03 0.031 0.71 0.855 1.41 1.715 2.07 2.594 0.28 0.379 0.54 0.773 0.81 1.156 0.37 0.517 0.74 1.038 1.09 1.563 0.02 0.024 0.05 0.038 0.07 0.062 0.59 0.89 1.16 1.778 1.71 2.688 0.02 0.032 0.05 0.061 0.07 0.094 0.54 0.902 1.06 1.829 1.56 2.75 0.02 0.032 0.04 0.06 0.06 0.093 0.5 0.921 0.96 1.844 1.41 2.781l0.06 0.126c0.45 0.929 0.88 1.868 1.28 2.812 0.02 0.051 0.04 0.105 0.06 0.156 0.4 0.936 0.78 1.895 1.13 2.844 0.02 0.053 0.04 0.104 0.06 0.156 0.35 0.949 0.67 1.885 0.97 2.844 0.02 0.072 0.04 0.147 0.06 0.219 0.3 0.941 0.56 1.894 0.82 2.843 0.02 0.074 0.04 0.146 0.06 0.219 0.08 0.31 0.14 0.627 0.22 0.938 0.17 0.72 0.35 1.432 0.5 2.156 0.07 0.342 0.12 0.688 0.18 1.031 0.12 0.617 0.25 1.225 0.35 1.844 0.15 0.893 0.26 1.791 0.37 2.688 0.02 0.145 0.05 0.291 0.07 0.437 0.01 0.093 0.02 0.188 0.03 0.281 0.01 0.094 0.02 0.187 0.03 0.282 0.1 0.952 0.19 1.912 0.25 2.872 0.06 0.94 0.11 1.9 0.12 2.85 0.01 0.1 0 0.2 0 0.31 0.02 1.05 0.01 2.1-0.03 3.15-0.03 0.94-0.08 1.86-0.15 2.79-0.01 0.12-0.02 0.25-0.04 0.37-0.07 0.92-0.16 1.84-0.28 2.75-0.12 0.96-0.27 1.93-0.43 2.88-0.02 0.08-0.02 0.16-0.04 0.25-0.02 0.12-0.03 0.25-0.06 0.37-0.16 0.91-0.36 1.82-0.56 2.72-0.03 0.13-0.06 0.27-0.09 0.41-0.21 0.88-0.45 1.77-0.69 2.65-0.17 0.59-0.35 1.17-0.53 1.75-0.18 0.57-0.34 1.13-0.53 1.69-0.3 0.86-0.61 1.71-0.94 2.56-0.06 0.16-0.13 0.32-0.19 0.47-0.04 0.11-0.08 0.23-0.12 0.34-0.36 0.88-0.73 1.73-1.13 2.6-0.38 0.82-0.77 1.63-1.19 2.44-0.08 0.15-0.16 0.31-0.25 0.46-0.41 0.8-0.83 1.6-1.28 2.38-0.09 0.17-0.18 0.34-0.28 0.5-0.2 0.34-0.42 0.66-0.62 1-0.37 0.59-0.75 1.17-1.13 1.75 0 0.01 0.01 0.02 0 0.03-0.49 0.75-1 1.49-1.53 2.22-0.46 0.64-0.95 1.25-1.44 1.87-0.19 0.26-0.36 0.53-0.56 0.79-0.13 0.16-0.27 0.33-0.41 0.5-0.16 0.2-0.33 0.39-0.5 0.59-0.55 0.67-1.13 1.32-1.72 1.97-0.6 0.67-1.23 1.35-1.87 2-0.16 0.16-0.31 0.34-0.47 0.5-21.13 21.13-52.26 24.49-77.19 11.15l0.13-0.18c-3.71-1.9-7.26-4.14-10.63-6.78-0.54-0.43-1.06-0.87-1.59-1.32-0.51-0.43-1.03-0.86-1.53-1.31-0.09-0.08-0.19-0.16-0.28-0.25-0.82-0.75-1.61-1.52-2.41-2.31-0.79-0.8-1.56-1.59-2.31-2.41-0.09-0.09-0.17-0.19-0.25-0.28-0.45-0.5-0.88-1.02-1.31-1.53-0.45-0.53-0.89-1.05-1.32-1.59-2.64-3.37-4.88-6.92-6.78-10.63l-0.19 0.13c-13.33-24.93-9.97-56.061 11.16-77.191 0.16-0.163 0.34-0.308 0.5-0.469 0.65-0.64 1.33-1.269 2-1.875 0.65-0.588 1.3-1.162 1.97-1.719 0.27-0.227 0.54-0.465 0.81-0.687 0.35-0.278 0.72-0.512 1.06-0.782 0.63-0.483 1.24-0.98 1.88-1.437 0.74-0.53 1.5-1.036 2.25-1.531 0.58-0.383 1.16-0.764 1.75-1.125 0.45-0.274 0.89-0.551 1.34-0.813 0.69-0.395 1.37-0.757 2.07-1.125 0.17-0.093 0.35-0.189 0.53-0.281 0.94-0.491 1.88-0.966 2.84-1.406 0.87-0.397 1.72-0.769 2.59-1.125 0.16-0.062 0.32-0.096 0.47-0.157 0.97-0.384 1.93-0.758 2.91-1.093 0.56-0.192 1.12-0.356 1.69-0.532 0.58-0.181 1.16-0.367 1.75-0.531 0.88-0.246 1.77-0.48 2.65-0.687 0.07-0.017 0.15-0.015 0.22-0.032 0.42-0.095 0.84-0.193 1.25-0.281 0.67-0.141 1.36-0.287 2.03-0.406 0.09-0.015 0.17-0.017 0.25-0.031 0.95-0.164 1.92-0.317 2.88-0.438 1.96-0.247 3.93-0.401 5.9-0.469 1.06-0.035 2.11-0.046 3.16-0.031z" clip-path="url(#clipPath8750)" transform="matrix(1 .080878 0 1 0 -21.056)" filter="url(#filter7286)" fill="#2d3335"/> + </g> + <g id="layer5"> + <path id="rect5757-8-7-7-9" d="m48.01 227.46l-4.807 4.55c-5.007-5.31-10.24-10.7-15.08-16.13l4.491-4.07c6.829 6.53 8.872 8.53 15.396 15.65z" fill="url(#linearGradient6241)"/> + <path id="path5604-9-1-8" d="m-95.5 225c28.719 0 52 23.28 52 52s-23.281 52-52 52c-28.72 0-52-23.28-52-52s23.28-52 52-52z" fill-opacity=".47594" fill="#d0e9f2"/> + <g id="g6060"> + <path id="path5604" d="m-82 136c-27.61 0-50-22.39-50-50 0-27.614 22.39-50 50-50 27.614 0 50 22.386 50 50 0 27.61-22.386 50-50 50zm0-3c26.51 0 48-20.49 48-47s-21.49-47-48-47-48 20.49-48 47 21.49 47 48 47z" fill="#2d3335"/> + <path id="path5604-2" fill="#9eaaac" d="m-82 136c-27.61 0-50-22.39-50-50v-0.5c0.27 27.38 22.55 49.5 50 49.5 27.446 0 49.729-22.12 50-49.5 0.002 0.168 0 0.332 0 0.5 0 27.61-22.386 50-50 50zm-48-50.5v-0.5c0-26.51 21.49-47 48-47s48 20.49 48 47c0 0.168 0.002 0.333 0 0.5-0.27-26.266-21.658-46.5-48-46.5-26.34 0-47.73 20.234-48 46.5z"/> + <path id="path5604-9" d="m-82 134c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z" fill-opacity=".47594" fill="#d0e9f2"/> + <path id="path5604-9-1" d="m-82 134c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z" fill="url(#radialGradient5751)"/> + <path id="path5604-9-1-8-8" fill="url(#linearGradient5778)" d="m-96.438 130.72l-0.843 5c4.83 1.48 9.965 2.28 15.281 2.28s10.451-0.8 15.281-2.28l-0.843-5c-4.553 1.47-9.397 2.28-14.438 2.28s-9.885-0.81-14.438-2.28z"/> + <path id="rect5757" fill="url(#linearGradient5768)" d="m-82 136.25c1.757 0 3.431 0.3 5 0.81v26.63c-1.569 0.51-3.243 0.81-5 0.81s-3.431-0.3-5-0.81v-26.63c1.569-0.51 3.243-0.81 5-0.81z"/> + <path id="rect5757-8-7" d="m-82 150.5c3.514 0 5.613 0.65 8 2.44v67.12c-3.137 0.91-4.486 1.44-8 1.44s-4.863-0.53-8-1.44v-67.12c2.637-1.79 4.486-2.44 8-2.44z" fill="url(#linearGradient5868)"/> + <path id="rect5757-8" d="m-82 154.5c3.514 0 7.238 0.78 10 2.44v65.12c-2.012 1.79-6.486 2.44-10 2.44s-7.863-0.15-10-2.44v-65.12c1.887-1.66 6.486-2.44 10-2.44z" fill="url(#linearGradient5798)"/> + <path id="rect5757-8-7-7" d="m-82 217.5c3.514 0 5.863 0.78 8 2.44v5.12c-2.387 1.54-4.486 2.44-8 2.44s-5.738-0.9-8-2.44v-5.12c2.387-1.91 4.486-2.44 8-2.44z" fill="url(#linearGradient5899)"/> + <path id="rect5757-8-7-7-0" fill="#e0bb41" d="m-82 221.5c-3.514 0-5.613 0.28-8 2.44v1.12c2.262 1.54 4.486 2.44 8 2.44s5.613-0.9 8-2.44v-1.12c-2.512-2.04-4.486-2.44-8-2.44z"/> + </g> + <path id="path5604-26" d="m125.06 134.69c-27.176-27.18-27.176-71.251 0-98.431 27.18-27.18 71.25-27.18 98.43 0s27.18 71.251 0 98.431-71.25 27.18-98.43 0zm2.96-2.96c26.09 26.1 67.41 27.08 93.5 0.99 26.1-26.1 25.11-67.416-0.98-93.509-26.09-26.092-67.41-27.077-93.51-0.984-26.09 26.093-25.11 67.413 0.99 93.503z" fill="#2d3335"/> + <path id="path5604-2-9" fill="#9eaaac" d="m125.06 134.69c-27.176-27.18-27.176-71.251 0-98.431 0.17-0.166 0.33-0.329 0.5-0.493-26.689 27.218-26.526 70.924 0.49 97.934 27.01 27.02 70.72 27.18 97.93 0.49-0.16 0.17-0.32 0.33-0.49 0.5-27.18 27.18-71.25 27.18-98.43 0zm2.46-96.955c0.17-0.167 0.33-0.327 0.5-0.492 26.09-26.093 67.41-25.109 93.5 0.984 26.1 26.093 27.08 67.413 0.99 93.503l-0.5 0.5c25.59-26.12 24.46-67.091-1.47-93.019-25.93-25.927-66.9-27.063-93.02-1.476z"/> + <path id="path5604-9-13" d="m127.03 132.72c26.1 26.09 68.4 26.09 94.49 0 26.1-26.1 26.1-68.4 0-94.493-26.09-26.093-68.39-26.093-94.49 0-26.09 26.093-26.09 68.393 0 94.493z" fill-opacity=".47594" fill="#d0e9f2"/> + <path id="path5604-9-1-3" d="m127.03 132.72c26.1 26.09 68.4 26.09 94.49 0 26.1-26.1 26.1-68.4 0-94.493-26.09-26.093-68.39-26.093-94.49 0-26.09 26.093-26.09 68.393 0 94.493z" fill="url(#radialGradient6256)"/> + <path id="path5604-9-1-8-8-1" fill="url(#linearGradient6253)" d="m116.05 115.28l-5.75 4.09c3.3 6.21 7.56 12.05 12.8 17.28 5.23 5.24 11.07 9.5 17.28 12.8l4.09-5.75c-5.92-3.04-11.49-7.01-16.45-11.97s-8.93-10.53-11.97-16.45z"/> + <path id="rect5757-5" fill="url(#linearGradient6250)" d="m124.82 134.93c1.73 1.73 3.08 3.67 4.12 5.72l-26.21 26.21c-2.05-1.04-3.988-2.39-5.718-4.12-1.729-1.73-3.084-3.67-4.121-5.72l26.209-26.21c2.05 1.04 3.99 2.39 5.72 4.12z"/> + <path id="rect5757-8-7-2" d="m116.27 159.23l-66.071 66.07c-3.984-2.19-5.832-3-9.29-6.46s-4.267-5.3-6.459-9.29l66.07-66.07c5.06 3.75 12.12 10.4 15.75 15.75z" fill="url(#linearGradient6247)"/> + <path id="rect5757-8-6" d="m105.78 154.12c3.46 3.46 7.43 6.66 8.52 11.02l-64.101 64.1c-6.517-5.16-14.555-12.79-19.686-19.69l64.1-64.1c3.491 0.23 7.657 5.16 11.117 8.62l0.05 0.05z" fill="url(#linearGradient6244)"/> + <path id="rect5757-8-6-3" opacity=".59565" d="m105.53 154.36c3.46 3.46 7.68 6.42 8.77 10.78l-64.101 64.1c-7.877-6.91-11.798-10.63-19.686-19.69l64.1-64.1c3.491 0.23 7.417 5.45 10.877 8.91h0.04z" fill="url(#linearGradient6279)"/> + <path id="path6587" opacity=".60435" d="m131.17 37.05c40.66-32.173 78.13-12.728 77.78 5.303s-56.57 70.357-76.37 66.117-25.45-53.389-1.41-71.42z" fill="url(#linearGradient6595)"/> + <text id="text6302-7" opacity=".46087" font-weight="bold" xml:space="preserve" transform="matrix(.98796 -.15470 .15470 .98796 0 0)" font-size="19.8px" y="69.184349" x="99.83886" font-family="Monospace" fill="url(#radialGradient6482)"><tspan id="tspan6304-0" y="69.184349" x="99.83886">01011001</tspan><tspan id="tspan6415-7" y="93.934013" x="99.83886">00110101</tspan><tspan id="tspan6417-1" y="118.68368" x="99.83886">10010011</tspan><tspan id="tspan6419-9" y="143.43335" x="99.83886"/></text> + <text id="text6302" font-weight="bold" xml:space="preserve" transform="matrix(.98796 -.15470 .15470 .98796 0 0)" font-size="19.8px" y="67.898323" x="99.410172" font-family="Monospace" fill="url(#radialGradient6427)"><tspan id="tspan6304" y="67.898323" x="99.410172">01011001</tspan><tspan id="tspan6415" y="92.647987" x="99.410172">00110101</tspan><tspan id="tspan6417" y="117.39765" x="99.410172">10010011</tspan><tspan id="tspan6419" y="142.14732" x="99.410172"/></text> + <path id="path6587-7" opacity=".76522" d="m219.46 129.09c-26.79 21.98-41.81 21.01-38.07 13.14 3.73-7.87 42.32-41.66 51.45-43.75 9.12-2.093 2.27 18.04-13.38 30.61z" fill="url(#linearGradient6614)"/> + </g> +</svg> \ No newline at end of file diff --git a/public/img/logo_leaflet.png b/public/img/logo_leaflet.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3a4d5e01981bf5b293e1f8d174431b782a5363 Binary files /dev/null and b/public/img/logo_leaflet.png differ diff --git a/public/img/logo_mapview.gif b/public/img/logo_mapview.gif new file mode 100644 index 0000000000000000000000000000000000000000..36e7cabcc318d04ba3cdef64c9ade3efe0334a70 Binary files /dev/null and b/public/img/logo_mapview.gif differ diff --git a/public/search.json b/public/search.json index 25564973e22781b2abee0385bfe456447fd4651e..60a61ff2569a11f8604f242c5ea43ac2c4f3e1e9 100644 --- a/public/search.json +++ b/public/search.json @@ -33,5 +33,26 @@ "title": "References", "section": "", "text": "Bivand, Roger, Tim Keitt, and Barry Rowlingson. 2022. “Rgdal:\nBindings for the ’Geospatial’ Data Abstraction Library.†https://CRAN.R-project.org/package=rgdal.\n\n\nBivand, Roger, and Colin Rundel. 2021. “Rgeos: Interface to\nGeometry Engine - Open Source (’GEOS’).†https://CRAN.R-project.org/package=rgeos.\n\n\nDunnington, Dewey. 2021. “Ggspatial: Spatial Data Framework for\nGgplot2.†https://CRAN.R-project.org/package=ggspatial.\n\n\nGDAL/OGR contributors. n.d. GDAL/OGR Geospatial Data\nAbstraction Software Library. Open Source Geospatial Foundation. https://gdal.org.\n\n\nGiraud, Timothée. 2022. “Mapsf: Thematic Cartography.†https://CRAN.R-project.org/package=mapsf.\n\n\nGiraud, Timothée, and Nicolas Lambert. 2016. “Cartography: Create\nand Integrate Maps in Your r Workflow†1. https://doi.org/10.21105/joss.00054.\n\n\nHijmans, Robert J. 2022a. “Raster: Geographic Data Analysis and\nModeling.†https://CRAN.R-project.org/package=raster.\n\n\n———. 2022b. “Terra: Spatial Data Analysis.†https://CRAN.R-project.org/package=terra.\n\n\nPebesma, Edzer. 2018b. “Simple Features for r:\nStandardized Support for Spatial Vector Data†10. https://doi.org/10.32614/RJ-2018-009.\n\n\n———. 2018a. “Simple Features for R: Standardized Support for\nSpatial Vector Data.†The R Journal 10 (1): 439. https://doi.org/10.32614/rj-2018-009.\n\n\n———. 2021. “Stars: Spatiotemporal Arrays, Raster and Vector Data\nCubes.†https://CRAN.R-project.org/package=stars.\n\n\nPebesma, Edzer J., and Roger S. Bivand. 2005. “Classes and Methods\nfor Spatial Data in r†5. https://CRAN.R-project.org/doc/Rnews/.\n\n\nPROJ contributors. 2021. PROJ Coordinate Transformation\nSoftware Library. Open Source Geospatial Foundation. https://proj.org/.\n\n\nTennekes, Martijn. 2018. “Tmap: Thematic\nMaps in r†84. https://doi.org/10.18637/jss.v084.i06.\n\n\nWickham, Hadley. 2016. “Ggplot2: Elegant Graphics for Data\nAnalysis.†https://ggplot2.tidyverse.org." + }, + { + "objectID": "02-data_acquisition.html", + "href": "02-data_acquisition.html", + "title": "2 Data Acquisition", + "section": "", + "text": "The function st_as_sf() makes it possible to transform a data.frame container of geographic coordinates into an object sf. Here we use the data.frame places2 created in the previous point.\n\nlibrary(sf)\nplace_sf <- st_as_sf(read.csv(\"data_cambodia/adress.csv\"), coords = c(\"long\", \"lat\"), crs = 4326)\nplace_sf\n\nSimple feature collection with 2 features and 1 field\nGeometry type: POINT\nDimension: XY\nBounding box: xmin: 104.8443 ymin: 11.54366 xmax: 104.9047 ymax: 11.55349\nGeodetic CRS: WGS 84\n address\n1 Phnom Penh International Airport, Phnom Penh, Cambodia\n2 Khmer Soviet Friendship Hospital, Phnom Penh, Cambodia\n geometry\n1 POINT (104.8443 11.55349)\n2 POINT (104.9047 11.54366)\n\n\nTo crate a sf POINT type object with only one pair of coordinate (WGS84, longitude=0.5, latitude = 45.5) :\n\nlibrary(sf)\ntest_point <- st_as_sf(data.frame(x = 0.5, y = 45.5), coords = c(\"x\", \"y\"), crs = 4326)\ntest_point\n\nSimple feature collection with 1 feature and 0 fields\nGeometry type: POINT\nDimension: XY\nBounding box: xmin: 0.5 ymin: 45.5 xmax: 0.5 ymax: 45.5\nGeodetic CRS: WGS 84\n geometry\n1 POINT (0.5 45.5)\n\n\nWe can display this object sf on an OpenStreetMap basesmap with the package maptiles maptiles (Giraud 2021).\n\nlibrary(maptiles)\nosm <- get_tiles(x = place_sf, zoom = 12)\nplot_tiles(osm)\nplot(st_geometry(place_sf), pch = 2, cex = 2, col = \"red\", add = TRUE)" + }, + { + "objectID": "02-data_acquisition.html#online-databases", + "href": "02-data_acquisition.html#online-databases", + "title": "2 Data Acquisition", + "section": "2.2 Online databases", + "text": "2.2 Online databases" + }, + { + "objectID": "02-data_acquisition.html#openstreetmap", + "href": "02-data_acquisition.html#openstreetmap", + "title": "2 Data Acquisition", + "section": "2.3 OpenStreetMap", + "text": "2.3 OpenStreetMap\n\n\n\nOpenStreetMap (OSM) is a participatory mapping project that aim s to buil a free geographic database on a global scale. OpenStreetMap lets you view, edit and use geographic data around the world.\nTerms of use\n\nOpenStreetMap is open data : you are free to use it for ant purpose as long as you credit OpenStreetMap and its contributers. If you modify or rely data in any way, you may distribute the result only under the same license. (…)\n\nContributors\n\n(…) Our contributors incloude enthusiastic mapmakers, GIS professional, engineers running OSM servers, humanitarians mapping disaster-stricken areas and many mmore.(…)\n\n\n2.3.1 Display and interactive map\nThe two main packages that allow to display as interactive map based on OSM are leaflet (Cheng, Karambelkar, and Xie 2022) and mapview (Appelhans et al. 2022).\n\n2.3.1.1 leaflet\n leaflet uses the javascript library Leaflet (Agafonkin 2015) to create interactive maps.\n\nlibrary(sf)\nlibrary(leaflet)\n\ndistrict <- st_read(\"data_cambodia/cambodia.gpkg\", layer = \"district\", quiet = TRUE)\nhospital <- st_read(\"data_cambodia/cambodia.gpkg\", layer = \"hospital\", quiet = TRUE)\n\n\nbanan <- district[district$ADM2_PCODE == \"KH0201\", ] #Select one district (Banan district: KH0201)\nhealth_banan <- hospital[hospital$DCODE == \"201\", ] #Select Health centers in Banan\n\nbanan <- st_transform(banan, 4326) #Transform coordinate system to WGS84\nhealth_banan <- st_transform(health_banan, 4326)\n\nbanan_map <- leaflet(banan) %>% #Create interactive map\n addTiles() %>%\n addPolygons() %>%\n addMarkers(data = health_banan)\nbanan_map\n\n\n\n\n\n\n\n\n\n\n\nWebsite of leaflet\nLeaflet for R\n\n\n\n\n\n2.3.1.2 mapview\n mapview relies on leaflet to create interactive maps, its use is easier and its documentation is a bit dense.\n\nlibrary(mapview)\nmapview(banan) + mapview(health_banan)\n\n\n\n\n\n\n\n\n\n\n\n\nWebsite of mapview\nmapview\n\n\n\n\n\n\n2.3.2 Import basemaps\nThe package maptiles (Giraud 2021) allows downlaoding and displaying raster basemaps.\nThe function get_tiles() allow you to download OSM background maps and the function plot_tiles() allows to display them.\nRenders are better if the input data used the same coordinate system as the tiles (EPSG:3857).\n\nlibrary(sf)\nlibrary(maptiles)\ndistrict <- st_read(\"data_cambodia/cambodia.gpkg\", layer = \"district\", quiet = TRUE)\ndistrict <- st_transform(district, 3857)\nosm_tiles <- get_tiles(x = district, zoom = 10, crop = TRUE)\nplot_tiles(osm_tiles)\nplot(st_geometry(district), border = \"grey20\", lwd = .7, add = TRUE)\nmtext(side = 1, line = -2, text = get_credit(\"OpenStreetMap\"), col=\"tomato\")\n\n\n\n\n\n\n\n\nAgafonkin, Vladimir. 2015. “Leaflet Javascript Libary.â€\n\n\nAppelhans, Tim, Florian Detsch, Christoph Reudenbach, and Stefan Woellauer. 2022. “Mapview: Interactive Viewing of Spatial Data in r.†https://CRAN.R-project.org/package=mapview.\n\n\nCheng, Joe, Bhaskar Karambelkar, and Yihui Xie. 2022. “Leaflet: Create Interactive Web Maps with the JavaScript ’Leaflet’ Library.†https://CRAN.R-project.org/package=leaflet.\n\n\nGiraud, Timothée. 2021. “Maptiles: Download and Display Map Tiles.†https://CRAN.R-project.org/package=maptiles." } ] \ No newline at end of file diff --git a/public/site_libs/HomeButton-0.0.1/LICENSE b/public/site_libs/HomeButton-0.0.1/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a1d341479adada942f765b3942c6e2760d624ede --- /dev/null +++ b/public/site_libs/HomeButton-0.0.1/LICENSE @@ -0,0 +1,7 @@ +Copyright (C) 2014 Daniel Montague + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/public/site_libs/HomeButton-0.0.1/easy-button-src.min.js b/public/site_libs/HomeButton-0.0.1/easy-button-src.min.js new file mode 100644 index 0000000000000000000000000000000000000000..8270ab1255da0b0d1fb0a94ce9cc1ecb3e0734d2 --- /dev/null +++ b/public/site_libs/HomeButton-0.0.1/easy-button-src.min.js @@ -0,0 +1 @@ +!function(){function a(a,c){this.title=a.title,this.stateName=a.stateName?a.stateName:"unnamed-state",this.icon=L.DomUtil.create("span",""),L.DomUtil.addClass(this.icon,"button-state state-"+this.stateName.replace(/(^\s*|\s*$)/g,"")),this.icon.innerHTML=b(a.icon),this.onClick=L.Util.bind(a.onClick?a.onClick:function(){},c)}function b(a){var b;return a.match(/[&;=<>"']/)?b=a:(a=a.replace(/(^\s*|\s*$)/g,""),b=L.DomUtil.create("span",""),0===a.indexOf("fa-")?L.DomUtil.addClass(b,"fa "+a):0===a.indexOf("glyphicon-")?L.DomUtil.addClass(b,"glyphicon "+a):L.DomUtil.addClass(b,a),b=b.outerHTML),b}L.Control.EasyBar=L.Control.extend({options:{position:"bottomright",id:null,leafletClasses:!0},initialize:function(a,b){b&&L.Util.setOptions(this,b),this._buildContainer(),this._buttons=[];for(var c=0;c<a.length;c++)a[c]._bar=this,a[c]._container=a[c].button,this._buttons.push(a[c]),this.container.appendChild(a[c].button)},_buildContainer:function(){this._container=this.container=L.DomUtil.create("div",""),this.options.leafletClasses&&L.DomUtil.addClass(this.container,"leaflet-bar easy-button-container leaflet-control"),this.options.id&&(this.container.id=this.options.id)},enable:function(){return L.DomUtil.addClass(this.container,"enabled"),L.DomUtil.removeClass(this.container,"disabled"),this.container.setAttribute("aria-hidden","false"),this},disable:function(){return L.DomUtil.addClass(this.container,"disabled"),L.DomUtil.removeClass(this.container,"enabled"),this.container.setAttribute("aria-hidden","true"),this},onAdd:function(){return this.container},addTo:function(a){this._map=a;for(var b=0;b<this._buttons.length;b++)this._buttons[b]._map=a;var c=this._container=this.onAdd(a),d=this.getPosition(),e=a._controlCorners[d];return L.DomUtil.addClass(c,"leaflet-control"),-1!==d.indexOf("bottom")?e.insertBefore(c,e.firstChild):e.appendChild(c),this}}),L.easyBar=function(){for(var a=[L.Control.EasyBar],b=0;b<arguments.length;b++)a.push(arguments[b]);return new(Function.prototype.bind.apply(L.Control.EasyBar,a))},L.Control.EasyButton=L.Control.extend({options:{position:"bottomright",id:null,type:"replace",states:[],leafletClasses:!0},initialize:function(b,c,d,e){this.options.states=[],null!=e&&(this.options.id=e),this.storage={},"object"==typeof arguments[arguments.length-1]&&L.Util.setOptions(this,arguments[arguments.length-1]),0===this.options.states.length&&"string"==typeof b&&"function"==typeof c&&this.options.states.push({icon:b,onClick:c,title:"string"==typeof d?d:""}),this._states=[];for(var f=0;f<this.options.states.length;f++)this._states.push(new a(this.options.states[f],this));this._buildButton(),this._activateState(this._states[0])},_buildButton:function(){if(this.button=L.DomUtil.create("button",""),this.options.id&&(this.button.id=this.options.id),this.options.leafletClasses&&L.DomUtil.addClass(this.button,"easy-button-button leaflet-bar-part"),L.DomEvent.addListener(this.button,"dblclick",L.DomEvent.stop),L.DomEvent.addListener(this.button,"click",function(a){L.DomEvent.stop(a),this._currentState.onClick(this,this._map?this._map:null),this._map.getContainer().focus()},this),"replace"==this.options.type)this.button.appendChild(this._currentState.icon);else for(var a=0;a<this._states.length;a++)this.button.appendChild(this._states[a].icon)},_currentState:{stateName:"unnamed",icon:function(){return document.createElement("span")}()},_states:null,state:function(a){return"string"==typeof a?this._activateStateNamed(a):"number"==typeof a&&this._activateState(this._states[a]),this},_activateStateNamed:function(a){for(var b=0;b<this._states.length;b++)this._states[b].stateName==a&&this._activateState(this._states[b])},_activateState:function(a){if(a!==this._currentState){"replace"==this.options.type&&(this.button.appendChild(a.icon),this.button.removeChild(this._currentState.icon)),a.title?this.button.title=a.title:this.button.removeAttribute("title");for(var b=0;b<this._states.length;b++)L.DomUtil.removeClass(this._states[b].icon,this._currentState.stateName+"-active"),L.DomUtil.addClass(this._states[b].icon,a.stateName+"-active");L.DomUtil.removeClass(this.button,this._currentState.stateName+"-active"),L.DomUtil.addClass(this.button,a.stateName+"-active"),this._currentState=a}},enable:function(){return L.DomUtil.addClass(this.button,"enabled"),L.DomUtil.removeClass(this.button,"disabled"),this.button.setAttribute("aria-hidden","false"),this},disable:function(){return L.DomUtil.addClass(this.button,"disabled"),L.DomUtil.removeClass(this.button,"enabled"),this.button.setAttribute("aria-hidden","true"),this},removeFrom:function(a){return this._container.parentNode.removeChild(this._container),this._map=null,this},onAdd:function(){var a=L.easyBar([this],{position:this.options.position,leafletClasses:this.options.leafletClasses});return this._container=a.container,this._container}}),L.easyButton=function(){var a=Array.prototype.concat.apply([L.Control.EasyButton],arguments);return new(Function.prototype.bind.apply(L.Control.EasyButton,a))}}(); diff --git a/public/site_libs/HomeButton-0.0.1/glyphicons-21-home.png b/public/site_libs/HomeButton-0.0.1/glyphicons-21-home.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1b31f8d814aea40c7348ac10e7696edf049066 Binary files /dev/null and b/public/site_libs/HomeButton-0.0.1/glyphicons-21-home.png differ diff --git a/public/site_libs/HomeButton-0.0.1/home-button.css b/public/site_libs/HomeButton-0.0.1/home-button.css new file mode 100644 index 0000000000000000000000000000000000000000..030bc3c80a41d99459de68360df92e01231c781a --- /dev/null +++ b/public/site_libs/HomeButton-0.0.1/home-button.css @@ -0,0 +1,69 @@ +.leaflet-bar button/*, +.leaflet-bar button:hover*/ { + background-color: rgba(255,255,255, 0.95) /*#fff*/; + border: none; + width: 100%; + height: 20px; + line-height: 15px; + font-size: 85%; + /*display: block;*/ + text-align: center; + text-decoration: none; + color: black; + cursor: pointer; + overflow-x: visible; + overflow-y: hidden; + opacity: 0.25; + filter: alpha(opacity = 25); + background-position: 50% 50%; + background-repeat: no-repeat; + display: inline-block; +} + +.leaflet-bar button:hover { + background-color: #00ffff; /* #909090 */; + text-decoration: underline; + opacity: 0.9; + filter: alpha(opacity=90); +} + +/* uncomment this to get rid of button borders, this also removes border from zoom buttons +.leaflet-touch .leaflet-bar { + border: none; +} + +/*.leaflet-bar button:first-of-type { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.leaflet-bar button:last-of-type { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom: none; +} + +.leaflet-bar.disabled, +.leaflet-bar button.disabled { + cursor: default; + pointer-events: none; + opacity: .4; +} + +.easy-button-button .button-state{ + display: block; + width: 100%; + height: 100%; + position: relative; +} + + +/*.leaflet-touch .leaflet-bar button { + width: 100%; + height: 20px; + line-height: 18px; + overflow-y: hidden; + opacity: .5; + filter: alpha(opacity=50); + white-space: nowrap; +}*/ diff --git a/public/site_libs/HomeButton-0.0.1/home-button.js b/public/site_libs/HomeButton-0.0.1/home-button.js new file mode 100644 index 0000000000000000000000000000000000000000..a7a8e7f4b256d82f4b95f091d230953153e6a51b --- /dev/null +++ b/public/site_libs/HomeButton-0.0.1/home-button.js @@ -0,0 +1,40 @@ +LeafletWidget.methods.addHomeButton = function (xmin, ymin, xmax, ymax, useext, + group, label, icon, position) { + + if (this.easyButton) { + this.easyButton.removeFrom(this); + } + + var bx = []; + if (useext) { + bx = [[ymin, xmin], [ymax, xmax]]; + } else { + bx = this.layerManager._groupContainers[group].getBounds(); + } + + var easyButton = new L.easyButton({ + position: position, + states: [{ + stateName: label, // name the state + icon: icon, // and define its properties + title: label, // like its title + onClick: function(btn, map){ + map.fitBounds(bx, {maxZoom: 18}); + btn.state(label); + } + }] + }); + + easyButton.addTo(this); + + this.currentEasyButton = easyButton; + +}; + + +LeafletWidget.methods.removeHomeButton = function () { + if (this.currentEasyButton) { + this.currentEasyButton.removeFrom(this); + this.currentEasyButton = null; + } +}; diff --git a/public/site_libs/Proj4Leaflet-1.0.1/proj4leaflet.js b/public/site_libs/Proj4Leaflet-1.0.1/proj4leaflet.js new file mode 100644 index 0000000000000000000000000000000000000000..eaa650c1b8558df62d0d9610a9ac7dd51c6b69fc --- /dev/null +++ b/public/site_libs/Proj4Leaflet-1.0.1/proj4leaflet.js @@ -0,0 +1,272 @@ +(function (factory) { + var L, proj4; + if (typeof define === 'function' && define.amd) { + // AMD + define(['leaflet', 'proj4'], factory); + } else if (typeof module === 'object' && typeof module.exports === "object") { + // Node/CommonJS + L = require('leaflet'); + proj4 = require('proj4'); + module.exports = factory(L, proj4); + } else { + // Browser globals + if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined') + throw 'Leaflet and proj4 must be loaded first'; + factory(window.L, window.proj4); + } +}(function (L, proj4) { + if (proj4.__esModule && proj4.default) { + // If proj4 was bundled as an ES6 module, unwrap it to get + // to the actual main proj4 object. + // See discussion in https://github.com/kartena/Proj4Leaflet/pull/147 + proj4 = proj4.default; + } + + L.Proj = {}; + + L.Proj._isProj4Obj = function(a) { + return (typeof a.inverse !== 'undefined' && + typeof a.forward !== 'undefined'); + }; + + L.Proj.Projection = L.Class.extend({ + initialize: function(code, def, bounds) { + var isP4 = L.Proj._isProj4Obj(code); + this._proj = isP4 ? code : this._projFromCodeDef(code, def); + this.bounds = isP4 ? def : bounds; + }, + + project: function (latlng) { + var point = this._proj.forward([latlng.lng, latlng.lat]); + return new L.Point(point[0], point[1]); + }, + + unproject: function (point, unbounded) { + var point2 = this._proj.inverse([point.x, point.y]); + return new L.LatLng(point2[1], point2[0], unbounded); + }, + + _projFromCodeDef: function(code, def) { + if (def) { + proj4.defs(code, def); + } else if (proj4.defs[code] === undefined) { + var urn = code.split(':'); + if (urn.length > 3) { + code = urn[urn.length - 3] + ':' + urn[urn.length - 1]; + } + if (proj4.defs[code] === undefined) { + throw 'No projection definition for code ' + code; + } + } + + return proj4(code); + } + }); + + L.Proj.CRS = L.Class.extend({ + includes: L.CRS, + + options: { + transformation: new L.Transformation(1, 0, -1, 0) + }, + + initialize: function(a, b, c) { + var code, + proj, + def, + options; + + if (L.Proj._isProj4Obj(a)) { + proj = a; + code = proj.srsCode; + options = b || {}; + + this.projection = new L.Proj.Projection(proj, options.bounds); + } else { + code = a; + def = b; + options = c || {}; + this.projection = new L.Proj.Projection(code, def, options.bounds); + } + + L.Util.setOptions(this, options); + this.code = code; + this.transformation = this.options.transformation; + + if (this.options.origin) { + this.transformation = + new L.Transformation(1, -this.options.origin[0], + -1, this.options.origin[1]); + } + + if (this.options.scales) { + this._scales = this.options.scales; + } else if (this.options.resolutions) { + this._scales = []; + for (var i = this.options.resolutions.length - 1; i >= 0; i--) { + if (this.options.resolutions[i]) { + this._scales[i] = 1 / this.options.resolutions[i]; + } + } + } + + this.infinite = !this.options.bounds; + + }, + + scale: function(zoom) { + var iZoom = Math.floor(zoom), + baseScale, + nextScale, + scaleDiff, + zDiff; + if (zoom === iZoom) { + return this._scales[zoom]; + } else { + // Non-integer zoom, interpolate + baseScale = this._scales[iZoom]; + nextScale = this._scales[iZoom + 1]; + scaleDiff = nextScale - baseScale; + zDiff = (zoom - iZoom); + return baseScale + scaleDiff * zDiff; + } + }, + + zoom: function(scale) { + // Find closest number in this._scales, down + var downScale = this._closestElement(this._scales, scale), + downZoom = this._scales.indexOf(downScale), + nextScale, + nextZoom, + scaleDiff; + // Check if scale is downScale => return array index + if (scale === downScale) { + return downZoom; + } + if (downScale === undefined) { + return -Infinity; + } + // Interpolate + nextZoom = downZoom + 1; + nextScale = this._scales[nextZoom]; + if (nextScale === undefined) { + return Infinity; + } + scaleDiff = nextScale - downScale; + return (scale - downScale) / scaleDiff + downZoom; + }, + + distance: L.CRS.Earth.distance, + + R: L.CRS.Earth.R, + + /* Get the closest lowest element in an array */ + _closestElement: function(array, element) { + var low; + for (var i = array.length; i--;) { + if (array[i] <= element && (low === undefined || low < array[i])) { + low = array[i]; + } + } + return low; + } + }); + + L.Proj.GeoJSON = L.GeoJSON.extend({ + initialize: function(geojson, options) { + this._callLevel = 0; + L.GeoJSON.prototype.initialize.call(this, geojson, options); + }, + + addData: function(geojson) { + var crs; + + if (geojson) { + if (geojson.crs && geojson.crs.type === 'name') { + crs = new L.Proj.CRS(geojson.crs.properties.name); + } else if (geojson.crs && geojson.crs.type) { + crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code); + } + + if (crs !== undefined) { + this.options.coordsToLatLng = function(coords) { + var point = L.point(coords[0], coords[1]); + return crs.projection.unproject(point); + }; + } + } + + // Base class' addData might call us recursively, but + // CRS shouldn't be cleared in that case, since CRS applies + // to the whole GeoJSON, inluding sub-features. + this._callLevel++; + try { + L.GeoJSON.prototype.addData.call(this, geojson); + } finally { + this._callLevel--; + if (this._callLevel === 0) { + delete this.options.coordsToLatLng; + } + } + } + }); + + L.Proj.geoJson = function(geojson, options) { + return new L.Proj.GeoJSON(geojson, options); + }; + + L.Proj.ImageOverlay = L.ImageOverlay.extend({ + initialize: function (url, bounds, options) { + L.ImageOverlay.prototype.initialize.call(this, url, null, options); + this._projectedBounds = bounds; + }, + + // Danger ahead: Overriding internal methods in Leaflet. + // Decided to do this rather than making a copy of L.ImageOverlay + // and doing very tiny modifications to it. + // Future will tell if this was wise or not. + _animateZoom: function (event) { + var scale = this._map.getZoomScale(event.zoom); + var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y); + var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center); + + L.DomUtil.setTransform(this._image, offset, scale); + }, + + _reset: function () { + var zoom = this._map.getZoom(); + var pixelOrigin = this._map.getPixelOrigin(); + var bounds = L.bounds( + this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin), + this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin) + ); + var size = bounds.getSize(); + + L.DomUtil.setPosition(this._image, bounds.min); + this._image.style.width = size.x + 'px'; + this._image.style.height = size.y + 'px'; + }, + + _projectedToNewLayerPoint: function (point, zoom, center) { + var viewHalf = this._map.getSize()._divideBy(2); + var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round(); + var topLeft = newTopLeft.add(this._map._getMapPanePos()); + + return this._transform(point, zoom)._subtract(topLeft); + }, + + _transform: function (point, zoom) { + var crs = this._map.options.crs; + var transformation = crs.transformation; + var scale = crs.scale(zoom); + + return transformation.transform(point, scale); + } + }); + + L.Proj.imageOverlay = function (url, bounds, options) { + return new L.Proj.ImageOverlay(url, bounds, options); + }; + + return L.Proj; +})); diff --git a/public/site_libs/clipboard-0.0.1/setClipboardText.js b/public/site_libs/clipboard-0.0.1/setClipboardText.js new file mode 100644 index 0000000000000000000000000000000000000000..919477d2aceb5cb17c1503de0cb8d5b69b3f06f3 --- /dev/null +++ b/public/site_libs/clipboard-0.0.1/setClipboardText.js @@ -0,0 +1,51 @@ +// taken from +// https://ourcodeworld.com/articles/read/143/how-to-copy-text-to-clipboard-with-javascript-easily +function setClipboardText(text) { + var id = 'mycustom-clipboard-textarea-hidden-id'; + var existsTextarea = document.getElementById(id); + + if (!existsTextarea) { + console.log('Creating textarea'); + var textarea = document.createElement('textarea'); + textarea.id = id; + // Place in top-left corner of screen regardless of scroll position. + textarea.style.position = 'fixed'; + textarea.style.top = 0; + textarea.style.left = 0; + + // Ensure it has a small width and height. Setting to 1px / 1em + // doesn't work as this gives a negative w/h on some browsers. + textarea.style.width = '1px'; + textarea.style.height = '1px'; + + // We don't need padding, reducing the size if it does flash render. + textarea.style.padding = 0; + + // Clean up any borders. + textarea.style.border = 'none'; + textarea.style.outline = 'none'; + textarea.style.boxShadow = 'none'; + + // Avoid flash of white box if rendered for any reason. + textarea.style.background = 'transparent'; + document.querySelector('body').appendChild(textarea); + console.log('The textarea now exists :)'); + existsTextarea = document.getElementById(id); + } else { + console.log('The textarea already exists :3'); + } + + existsTextarea.value = text; + existsTextarea.select(); + + try { + var status = document.execCommand('copy'); + if (!status) { + console.error('Cannot copy text'); + } else { + console.log('The text is now on the clipboard'); + } + } catch (err) { + console.log('Unable to copy.'); + } +} diff --git a/public/site_libs/htmlwidgets-1.5.4/htmlwidgets.js b/public/site_libs/htmlwidgets-1.5.4/htmlwidgets.js new file mode 100644 index 0000000000000000000000000000000000000000..da8b23678f89984a7fb0c1b8356c85e564a885e8 --- /dev/null +++ b/public/site_libs/htmlwidgets-1.5.4/htmlwidgets.js @@ -0,0 +1,903 @@ +(function() { + // If window.HTMLWidgets is already defined, then use it; otherwise create a + // new object. This allows preceding code to set options that affect the + // initialization process (though none currently exist). + window.HTMLWidgets = window.HTMLWidgets || {}; + + // See if we're running in a viewer pane. If not, we're in a web browser. + var viewerMode = window.HTMLWidgets.viewerMode = + /\bviewer_pane=1\b/.test(window.location); + + // See if we're running in Shiny mode. If not, it's a static document. + // Note that static widgets can appear in both Shiny and static modes, but + // obviously, Shiny widgets can only appear in Shiny apps/documents. + var shinyMode = window.HTMLWidgets.shinyMode = + typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings; + + // We can't count on jQuery being available, so we implement our own + // version if necessary. + function querySelectorAll(scope, selector) { + if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) { + return scope.find(selector); + } + if (scope.querySelectorAll) { + return scope.querySelectorAll(selector); + } + } + + function asArray(value) { + if (value === null) + return []; + if ($.isArray(value)) + return value; + return [value]; + } + + // Implement jQuery's extend + function extend(target /*, ... */) { + if (arguments.length == 1) { + return target; + } + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + target[prop] = source[prop]; + } + } + } + return target; + } + + // IE8 doesn't support Array.forEach. + function forEach(values, callback, thisArg) { + if (values.forEach) { + values.forEach(callback, thisArg); + } else { + for (var i = 0; i < values.length; i++) { + callback.call(thisArg, values[i], i, values); + } + } + } + + // Replaces the specified method with the return value of funcSource. + // + // Note that funcSource should not BE the new method, it should be a function + // that RETURNS the new method. funcSource receives a single argument that is + // the overridden method, it can be called from the new method. The overridden + // method can be called like a regular function, it has the target permanently + // bound to it so "this" will work correctly. + function overrideMethod(target, methodName, funcSource) { + var superFunc = target[methodName] || function() {}; + var superFuncBound = function() { + return superFunc.apply(target, arguments); + }; + target[methodName] = funcSource(superFuncBound); + } + + // Add a method to delegator that, when invoked, calls + // delegatee.methodName. If there is no such method on + // the delegatee, but there was one on delegator before + // delegateMethod was called, then the original version + // is invoked instead. + // For example: + // + // var a = { + // method1: function() { console.log('a1'); } + // method2: function() { console.log('a2'); } + // }; + // var b = { + // method1: function() { console.log('b1'); } + // }; + // delegateMethod(a, b, "method1"); + // delegateMethod(a, b, "method2"); + // a.method1(); + // a.method2(); + // + // The output would be "b1", "a2". + function delegateMethod(delegator, delegatee, methodName) { + var inherited = delegator[methodName]; + delegator[methodName] = function() { + var target = delegatee; + var method = delegatee[methodName]; + + // The method doesn't exist on the delegatee. Instead, + // call the method on the delegator, if it exists. + if (!method) { + target = delegator; + method = inherited; + } + + if (method) { + return method.apply(target, arguments); + } + }; + } + + // Implement a vague facsimilie of jQuery's data method + function elementData(el, name, value) { + if (arguments.length == 2) { + return el["htmlwidget_data_" + name]; + } else if (arguments.length == 3) { + el["htmlwidget_data_" + name] = value; + return el; + } else { + throw new Error("Wrong number of arguments for elementData: " + + arguments.length); + } + } + + // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + + function hasClass(el, className) { + var re = new RegExp("\\b" + escapeRegExp(className) + "\\b"); + return re.test(el.className); + } + + // elements - array (or array-like object) of HTML elements + // className - class name to test for + // include - if true, only return elements with given className; + // if false, only return elements *without* given className + function filterByClass(elements, className, include) { + var results = []; + for (var i = 0; i < elements.length; i++) { + if (hasClass(elements[i], className) == include) + results.push(elements[i]); + } + return results; + } + + function on(obj, eventName, func) { + if (obj.addEventListener) { + obj.addEventListener(eventName, func, false); + } else if (obj.attachEvent) { + obj.attachEvent(eventName, func); + } + } + + function off(obj, eventName, func) { + if (obj.removeEventListener) + obj.removeEventListener(eventName, func, false); + else if (obj.detachEvent) { + obj.detachEvent(eventName, func); + } + } + + // Translate array of values to top/right/bottom/left, as usual with + // the "padding" CSS property + // https://developer.mozilla.org/en-US/docs/Web/CSS/padding + function unpackPadding(value) { + if (typeof(value) === "number") + value = [value]; + if (value.length === 1) { + return {top: value[0], right: value[0], bottom: value[0], left: value[0]}; + } + if (value.length === 2) { + return {top: value[0], right: value[1], bottom: value[0], left: value[1]}; + } + if (value.length === 3) { + return {top: value[0], right: value[1], bottom: value[2], left: value[1]}; + } + if (value.length === 4) { + return {top: value[0], right: value[1], bottom: value[2], left: value[3]}; + } + } + + // Convert an unpacked padding object to a CSS value + function paddingToCss(paddingObj) { + return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px"; + } + + // Makes a number suitable for CSS + function px(x) { + if (typeof(x) === "number") + return x + "px"; + else + return x; + } + + // Retrieves runtime widget sizing information for an element. + // The return value is either null, or an object with fill, padding, + // defaultWidth, defaultHeight fields. + function sizingPolicy(el) { + var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']"); + if (!sizingEl) + return null; + var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}"); + if (viewerMode) { + return sp.viewer; + } else { + return sp.browser; + } + } + + // @param tasks Array of strings (or falsy value, in which case no-op). + // Each element must be a valid JavaScript expression that yields a + // function. Or, can be an array of objects with "code" and "data" + // properties; in this case, the "code" property should be a string + // of JS that's an expr that yields a function, and "data" should be + // an object that will be added as an additional argument when that + // function is called. + // @param target The object that will be "this" for each function + // execution. + // @param args Array of arguments to be passed to the functions. (The + // same arguments will be passed to all functions.) + function evalAndRun(tasks, target, args) { + if (tasks) { + forEach(tasks, function(task) { + var theseArgs = args; + if (typeof(task) === "object") { + theseArgs = theseArgs.concat([task.data]); + task = task.code; + } + var taskFunc = tryEval(task); + if (typeof(taskFunc) !== "function") { + throw new Error("Task must be a function! Source:\n" + task); + } + taskFunc.apply(target, theseArgs); + }); + } + } + + // Attempt eval() both with and without enclosing in parentheses. + // Note that enclosing coerces a function declaration into + // an expression that eval() can parse + // (otherwise, a SyntaxError is thrown) + function tryEval(code) { + var result = null; + try { + result = eval("(" + code + ")"); + } catch(error) { + if (!(error instanceof SyntaxError)) { + throw error; + } + try { + result = eval(code); + } catch(e) { + if (e instanceof SyntaxError) { + throw error; + } else { + throw e; + } + } + } + return result; + } + + function initSizing(el) { + var sizing = sizingPolicy(el); + if (!sizing) + return; + + var cel = document.getElementById("htmlwidget_container"); + if (!cel) + return; + + if (typeof(sizing.padding) !== "undefined") { + document.body.style.margin = "0"; + document.body.style.padding = paddingToCss(unpackPadding(sizing.padding)); + } + + if (sizing.fill) { + document.body.style.overflow = "hidden"; + document.body.style.width = "100%"; + document.body.style.height = "100%"; + document.documentElement.style.width = "100%"; + document.documentElement.style.height = "100%"; + if (cel) { + cel.style.position = "absolute"; + var pad = unpackPadding(sizing.padding); + cel.style.top = pad.top + "px"; + cel.style.right = pad.right + "px"; + cel.style.bottom = pad.bottom + "px"; + cel.style.left = pad.left + "px"; + el.style.width = "100%"; + el.style.height = "100%"; + } + + return { + getWidth: function() { return cel.offsetWidth; }, + getHeight: function() { return cel.offsetHeight; } + }; + + } else { + el.style.width = px(sizing.width); + el.style.height = px(sizing.height); + + return { + getWidth: function() { return el.offsetWidth; }, + getHeight: function() { return el.offsetHeight; } + }; + } + } + + // Default implementations for methods + var defaults = { + find: function(scope) { + return querySelectorAll(scope, "." + this.name); + }, + renderError: function(el, err) { + var $el = $(el); + + this.clearError(el); + + // Add all these error classes, as Shiny does + var errClass = "shiny-output-error"; + if (err.type !== null) { + // use the classes of the error condition as CSS class names + errClass = errClass + " " + $.map(asArray(err.type), function(type) { + return errClass + "-" + type; + }).join(" "); + } + errClass = errClass + " htmlwidgets-error"; + + // Is el inline or block? If inline or inline-block, just display:none it + // and add an inline error. + var display = $el.css("display"); + $el.data("restore-display-mode", display); + + if (display === "inline" || display === "inline-block") { + $el.hide(); + if (err.message !== "") { + var errorSpan = $("<span>").addClass(errClass); + errorSpan.text(err.message); + $el.after(errorSpan); + } + } else if (display === "block") { + // If block, add an error just after the el, set visibility:none on the + // el, and position the error to be on top of the el. + // Mark it with a unique ID and CSS class so we can remove it later. + $el.css("visibility", "hidden"); + if (err.message !== "") { + var errorDiv = $("<div>").addClass(errClass).css("position", "absolute") + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + // setting width can push out the page size, forcing otherwise + // unnecessary scrollbars to appear and making it impossible for + // the element to shrink; so use max-width instead + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + errorDiv.text(err.message); + $el.after(errorDiv); + + // Really dumb way to keep the size/position of the error in sync with + // the parent element as the window is resized or whatever. + var intId = setInterval(function() { + if (!errorDiv[0].parentElement) { + clearInterval(intId); + return; + } + errorDiv + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + }, 500); + } + } + }, + clearError: function(el) { + var $el = $(el); + var display = $el.data("restore-display-mode"); + $el.data("restore-display-mode", null); + + if (display === "inline" || display === "inline-block") { + if (display) + $el.css("display", display); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } else if (display === "block"){ + $el.css("visibility", "inherit"); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } + }, + sizing: {} + }; + + // Called by widget bindings to register a new type of widget. The definition + // object can contain the following properties: + // - name (required) - A string indicating the binding name, which will be + // used by default as the CSS classname to look for. + // - initialize (optional) - A function(el) that will be called once per + // widget element; if a value is returned, it will be passed as the third + // value to renderValue. + // - renderValue (required) - A function(el, data, initValue) that will be + // called with data. Static contexts will cause this to be called once per + // element; Shiny apps will cause this to be called multiple times per + // element, as the data changes. + window.HTMLWidgets.widget = function(definition) { + if (!definition.name) { + throw new Error("Widget must have a name"); + } + if (!definition.type) { + throw new Error("Widget must have a type"); + } + // Currently we only support output widgets + if (definition.type !== "output") { + throw new Error("Unrecognized widget type '" + definition.type + "'"); + } + // TODO: Verify that .name is a valid CSS classname + + // Support new-style instance-bound definitions. Old-style class-bound + // definitions have one widget "object" per widget per type/class of + // widget; the renderValue and resize methods on such widget objects + // take el and instance arguments, because the widget object can't + // store them. New-style instance-bound definitions have one widget + // object per widget instance; the definition that's passed in doesn't + // provide renderValue or resize methods at all, just the single method + // factory(el, width, height) + // which returns an object that has renderValue(x) and resize(w, h). + // This enables a far more natural programming style for the widget + // author, who can store per-instance state using either OO-style + // instance fields or functional-style closure variables (I guess this + // is in contrast to what can only be called C-style pseudo-OO which is + // what we required before). + if (definition.factory) { + definition = createLegacyDefinitionAdapter(definition); + } + + if (!definition.renderValue) { + throw new Error("Widget must have a renderValue function"); + } + + // For static rendering (non-Shiny), use a simple widget registration + // scheme. We also use this scheme for Shiny apps/documents that also + // contain static widgets. + window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; + // Merge defaults into the definition; don't mutate the original definition. + var staticBinding = extend({}, defaults, definition); + overrideMethod(staticBinding, "find", function(superfunc) { + return function(scope) { + var results = superfunc(scope); + // Filter out Shiny outputs, we only want the static kind + return filterByClass(results, "html-widget-output", false); + }; + }); + window.HTMLWidgets.widgets.push(staticBinding); + + if (shinyMode) { + // Shiny is running. Register the definition with an output binding. + // The definition itself will not be the output binding, instead + // we will make an output binding object that delegates to the + // definition. This is because we foolishly used the same method + // name (renderValue) for htmlwidgets definition and Shiny bindings + // but they actually have quite different semantics (the Shiny + // bindings receive data that includes lots of metadata that it + // strips off before calling htmlwidgets renderValue). We can't + // just ignore the difference because in some widgets it's helpful + // to call this.renderValue() from inside of resize(), and if + // we're not delegating, then that call will go to the Shiny + // version instead of the htmlwidgets version. + + // Merge defaults with definition, without mutating either. + var bindingDef = extend({}, defaults, definition); + + // This object will be our actual Shiny binding. + var shinyBinding = new Shiny.OutputBinding(); + + // With a few exceptions, we'll want to simply use the bindingDef's + // version of methods if they are available, otherwise fall back to + // Shiny's defaults. NOTE: If Shiny's output bindings gain additional + // methods in the future, and we want them to be overrideable by + // HTMLWidget binding definitions, then we'll need to add them to this + // list. + delegateMethod(shinyBinding, bindingDef, "getId"); + delegateMethod(shinyBinding, bindingDef, "onValueChange"); + delegateMethod(shinyBinding, bindingDef, "onValueError"); + delegateMethod(shinyBinding, bindingDef, "renderError"); + delegateMethod(shinyBinding, bindingDef, "clearError"); + delegateMethod(shinyBinding, bindingDef, "showProgress"); + + // The find, renderValue, and resize are handled differently, because we + // want to actually decorate the behavior of the bindingDef methods. + + shinyBinding.find = function(scope) { + var results = bindingDef.find(scope); + + // Only return elements that are Shiny outputs, not static ones + var dynamicResults = results.filter(".html-widget-output"); + + // It's possible that whatever caused Shiny to think there might be + // new dynamic outputs, also caused there to be new static outputs. + // Since there might be lots of different htmlwidgets bindings, we + // schedule execution for later--no need to staticRender multiple + // times. + if (results.length !== dynamicResults.length) + scheduleStaticRender(); + + return dynamicResults; + }; + + // Wrap renderValue to handle initialization, which unfortunately isn't + // supported natively by Shiny at the time of this writing. + + shinyBinding.renderValue = function(el, data) { + Shiny.renderDependencies(data.deps); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var i = 0; data.evals && i < data.evals.length; i++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); + } + if (!bindingDef.renderOnNullValue) { + if (data.x === null) { + el.style.visibility = "hidden"; + return; + } else { + el.style.visibility = "inherit"; + } + } + if (!elementData(el, "initialized")) { + initSizing(el); + + elementData(el, "initialized", true); + if (bindingDef.initialize) { + var result = bindingDef.initialize(el, el.offsetWidth, + el.offsetHeight); + elementData(el, "init_result", result); + } + } + bindingDef.renderValue(el, data.x, elementData(el, "init_result")); + evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); + }; + + // Only override resize if bindingDef implements it + if (bindingDef.resize) { + shinyBinding.resize = function(el, width, height) { + // Shiny can call resize before initialize/renderValue have been + // called, which doesn't make sense for widgets. + if (elementData(el, "initialized")) { + bindingDef.resize(el, width, height, elementData(el, "init_result")); + } + }; + } + + Shiny.outputBindings.register(shinyBinding, bindingDef.name); + } + }; + + var scheduleStaticRenderTimerId = null; + function scheduleStaticRender() { + if (!scheduleStaticRenderTimerId) { + scheduleStaticRenderTimerId = setTimeout(function() { + scheduleStaticRenderTimerId = null; + window.HTMLWidgets.staticRender(); + }, 1); + } + } + + // Render static widgets after the document finishes loading + // Statically render all elements that are of this widget's class + window.HTMLWidgets.staticRender = function() { + var bindings = window.HTMLWidgets.widgets || []; + forEach(bindings, function(binding) { + var matches = binding.find(document.documentElement); + forEach(matches, function(el) { + var sizeObj = initSizing(el, binding); + + if (hasClass(el, "html-widget-static-bound")) + return; + el.className = el.className + " html-widget-static-bound"; + + var initResult; + if (binding.initialize) { + initResult = binding.initialize(el, + sizeObj ? sizeObj.getWidth() : el.offsetWidth, + sizeObj ? sizeObj.getHeight() : el.offsetHeight + ); + elementData(el, "init_result", initResult); + } + + if (binding.resize) { + var lastSize = { + w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, + h: sizeObj ? sizeObj.getHeight() : el.offsetHeight + }; + var resizeHandler = function(e) { + var size = { + w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, + h: sizeObj ? sizeObj.getHeight() : el.offsetHeight + }; + if (size.w === 0 && size.h === 0) + return; + if (size.w === lastSize.w && size.h === lastSize.h) + return; + lastSize = size; + binding.resize(el, size.w, size.h, initResult); + }; + + on(window, "resize", resizeHandler); + + // This is needed for cases where we're running in a Shiny + // app, but the widget itself is not a Shiny output, but + // rather a simple static widget. One example of this is + // an rmarkdown document that has runtime:shiny and widget + // that isn't in a render function. Shiny only knows to + // call resize handlers for Shiny outputs, not for static + // widgets, so we do it ourselves. + if (window.jQuery) { + window.jQuery(document).on( + "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", + resizeHandler + ); + window.jQuery(document).on( + "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", + resizeHandler + ); + } + + // This is needed for the specific case of ioslides, which + // flips slides between display:none and display:block. + // Ideally we would not have to have ioslide-specific code + // here, but rather have ioslides raise a generic event, + // but the rmarkdown package just went to CRAN so the + // window to getting that fixed may be long. + if (window.addEventListener) { + // It's OK to limit this to window.addEventListener + // browsers because ioslides itself only supports + // such browsers. + on(document, "slideenter", resizeHandler); + on(document, "slideleave", resizeHandler); + } + } + + var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); + if (scriptData) { + var data = JSON.parse(scriptData.textContent || scriptData.text); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var k = 0; data.evals && k < data.evals.length; k++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); + } + binding.renderValue(el, data.x, initResult); + evalAndRun(data.jsHooks.render, initResult, [el, data.x]); + } + }); + }); + + invokePostRenderHandlers(); + } + + + function has_jQuery3() { + if (!window.jQuery) { + return false; + } + var $version = window.jQuery.fn.jquery; + var $major_version = parseInt($version.split(".")[0]); + return $major_version >= 3; + } + + /* + / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's + / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now + / really means $(setTimeout(fn)). + / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous + / + / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny + / one tick later than it did before, which means staticRender() is + / called renderValue() earlier than (advanced) widget authors might be expecting. + / https://github.com/rstudio/shiny/issues/2630 + / + / For a concrete example, leaflet has some methods (e.g., updateBounds) + / which reference Shiny methods registered in initShiny (e.g., setInputValue). + / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to + / delay execution of those methods (until Shiny methods are ready) + / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 + / + / Ideally widget authors wouldn't need to use this setTimeout() hack that + / leaflet uses to call Shiny methods on a staticRender(). In the long run, + / the logic initShiny should be broken up so that method registration happens + / right away, but binding happens later. + */ + function maybeStaticRenderLater() { + if (shinyMode && has_jQuery3()) { + window.jQuery(window.HTMLWidgets.staticRender); + } else { + window.HTMLWidgets.staticRender(); + } + } + + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", function() { + document.removeEventListener("DOMContentLoaded", arguments.callee, false); + maybeStaticRenderLater(); + }, false); + } else if (document.attachEvent) { + document.attachEvent("onreadystatechange", function() { + if (document.readyState === "complete") { + document.detachEvent("onreadystatechange", arguments.callee); + maybeStaticRenderLater(); + } + }); + } + + + window.HTMLWidgets.getAttachmentUrl = function(depname, key) { + // If no key, default to the first item + if (typeof(key) === "undefined") + key = 1; + + var link = document.getElementById(depname + "-" + key + "-attachment"); + if (!link) { + throw new Error("Attachment " + depname + "/" + key + " not found in document"); + } + return link.getAttribute("href"); + }; + + window.HTMLWidgets.dataframeToD3 = function(df) { + var names = []; + var length; + for (var name in df) { + if (df.hasOwnProperty(name)) + names.push(name); + if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { + throw new Error("All fields must be arrays"); + } else if (typeof(length) !== "undefined" && length !== df[name].length) { + throw new Error("All fields must be arrays of the same length"); + } + length = df[name].length; + } + var results = []; + var item; + for (var row = 0; row < length; row++) { + item = {}; + for (var col = 0; col < names.length; col++) { + item[names[col]] = df[names[col]][row]; + } + results.push(item); + } + return results; + }; + + window.HTMLWidgets.transposeArray2D = function(array) { + if (array.length === 0) return array; + var newArray = array[0].map(function(col, i) { + return array.map(function(row) { + return row[i] + }) + }); + return newArray; + }; + // Split value at splitChar, but allow splitChar to be escaped + // using escapeChar. Any other characters escaped by escapeChar + // will be included as usual (including escapeChar itself). + function splitWithEscape(value, splitChar, escapeChar) { + var results = []; + var escapeMode = false; + var currentResult = ""; + for (var pos = 0; pos < value.length; pos++) { + if (!escapeMode) { + if (value[pos] === splitChar) { + results.push(currentResult); + currentResult = ""; + } else if (value[pos] === escapeChar) { + escapeMode = true; + } else { + currentResult += value[pos]; + } + } else { + currentResult += value[pos]; + escapeMode = false; + } + } + if (currentResult !== "") { + results.push(currentResult); + } + return results; + } + // Function authored by Yihui/JJ Allaire + window.HTMLWidgets.evaluateStringMember = function(o, member) { + var parts = splitWithEscape(member, '.', '\\'); + for (var i = 0, l = parts.length; i < l; i++) { + var part = parts[i]; + // part may be a character or 'numeric' member name + if (o !== null && typeof o === "object" && part in o) { + if (i == (l - 1)) { // if we are at the end of the line then evalulate + if (typeof o[part] === "string") + o[part] = tryEval(o[part]); + } else { // otherwise continue to next embedded object + o = o[part]; + } + } + } + }; + + // Retrieve the HTMLWidget instance (i.e. the return value of an + // HTMLWidget binding's initialize() or factory() function) + // associated with an element, or null if none. + window.HTMLWidgets.getInstance = function(el) { + return elementData(el, "init_result"); + }; + + // Finds the first element in the scope that matches the selector, + // and returns the HTMLWidget instance (i.e. the return value of + // an HTMLWidget binding's initialize() or factory() function) + // associated with that element, if any. If no element matches the + // selector, or the first matching element has no HTMLWidget + // instance associated with it, then null is returned. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.find = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var el = scope.querySelector(selector); + if (el === null) { + return null; + } else { + return window.HTMLWidgets.getInstance(el); + } + }; + + // Finds all elements in the scope that match the selector, and + // returns the HTMLWidget instances (i.e. the return values of + // an HTMLWidget binding's initialize() or factory() function) + // associated with the elements, in an array. If elements that + // match the selector don't have an associated HTMLWidget + // instance, the returned array will contain nulls. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.findAll = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var nodes = scope.querySelectorAll(selector); + var results = []; + for (var i = 0; i < nodes.length; i++) { + results.push(window.HTMLWidgets.getInstance(nodes[i])); + } + return results; + }; + + var postRenderHandlers = []; + function invokePostRenderHandlers() { + while (postRenderHandlers.length) { + var handler = postRenderHandlers.shift(); + if (handler) { + handler(); + } + } + } + + // Register the given callback function to be invoked after the + // next time static widgets are rendered. + window.HTMLWidgets.addPostRenderHandler = function(callback) { + postRenderHandlers.push(callback); + }; + + // Takes a new-style instance-bound definition, and returns an + // old-style class-bound definition. This saves us from having + // to rewrite all the logic in this file to accomodate both + // types of definitions. + function createLegacyDefinitionAdapter(defn) { + var result = { + name: defn.name, + type: defn.type, + initialize: function(el, width, height) { + return defn.factory(el, width, height); + }, + renderValue: function(el, x, instance) { + return instance.renderValue(x); + }, + resize: function(el, width, height, instance) { + return instance.resize(width, height); + } + }; + + if (defn.find) + result.find = defn.find; + if (defn.renderError) + result.renderError = defn.renderError; + if (defn.clearError) + result.clearError = defn.clearError; + + return result; + } +})(); + diff --git a/public/site_libs/jquery-1.12.4/jquery.min.js b/public/site_libs/jquery-1.12.4/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..e836475870da67f3c72f64777c6e0f37d9f4c87b --- /dev/null +++ b/public/site_libs/jquery-1.12.4/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{ +marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({ +padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); diff --git a/public/site_libs/leaflet-1.3.1/images/layers-2x.png b/public/site_libs/leaflet-1.3.1/images/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 Binary files /dev/null and b/public/site_libs/leaflet-1.3.1/images/layers-2x.png differ diff --git a/public/site_libs/leaflet-1.3.1/images/layers.png b/public/site_libs/leaflet-1.3.1/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 Binary files /dev/null and b/public/site_libs/leaflet-1.3.1/images/layers.png differ diff --git a/public/site_libs/leaflet-1.3.1/images/marker-icon-2x.png b/public/site_libs/leaflet-1.3.1/images/marker-icon-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..88f9e501888c9c6cb29ad340d9a888627dd1b6d8 Binary files /dev/null and b/public/site_libs/leaflet-1.3.1/images/marker-icon-2x.png differ diff --git a/public/site_libs/leaflet-1.3.1/images/marker-icon.png b/public/site_libs/leaflet-1.3.1/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 Binary files /dev/null and b/public/site_libs/leaflet-1.3.1/images/marker-icon.png differ diff --git a/public/site_libs/leaflet-1.3.1/images/marker-shadow.png b/public/site_libs/leaflet-1.3.1/images/marker-shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd2979532a19a15b824ce763c76e04a8dafadfb Binary files /dev/null and b/public/site_libs/leaflet-1.3.1/images/marker-shadow.png differ diff --git a/public/site_libs/leaflet-1.3.1/leaflet.css b/public/site_libs/leaflet-1.3.1/leaflet.css new file mode 100644 index 0000000000000000000000000000000000000000..230e5bad14f3494ce152dc69634b24c232f76462 --- /dev/null +++ b/public/site_libs/leaflet-1.3.1/leaflet.css @@ -0,0 +1,636 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer { + max-width: none !important; + max-height: none !important; + } + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(images/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover { + text-decoration: underline; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: border-box; + box-sizing: border-box; + + background: #fff; + background: rgba(255, 255, 255, 0.5); + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + border: none; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/public/site_libs/leaflet-1.3.1/leaflet.js b/public/site_libs/leaflet-1.3.1/leaflet.js new file mode 100644 index 0000000000000000000000000000000000000000..4eca8af7fa81909534894262fe9d14d79c2d5585 --- /dev/null +++ b/public/site_libs/leaflet-1.3.1/leaflet.js @@ -0,0 +1,5 @@ +/* @preserve + * Leaflet 1.3.1+Detached: ba6f97fff8647e724e4dfe66d2ed7da11f908989.ba6f97f, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Xi?"z":"x":""}return h||"M0 0"}function A(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function I(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function B(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(Qi,n,!1):"touchmove"===i?t.removeEventListener(te,n,!1):"touchend"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||"mouse"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+"dblclick"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+"dblclick"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener("dblclick",o,!1),this}function V(t,i,e,n){if("object"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if("object"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf("touch")?I(t,i,r,s):!Vi||"dblclick"!==i||!F||Ui&&Si?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf("touch")?B(t,i,s):!Vi||"dblclick"!==i||!U||Ui&&Si?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,"mousewheel",Y),this}function J(t){return V(t,"mousedown touchstart dblclick",Y),G(t,"click",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return"string"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+" ":"")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((" "+gt(t)+" ").replace(" "+i+" "," ")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,"dragstart",$)}function Tt(){q(window,"dragstart",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline="none",V(window,"keydown",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,"keydown",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function At(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=It(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function It(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=It(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=It(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Xe(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case"LineString":case"MultiLineString":return n=Ft(a,"LineString"===r.type?0:1,l),new tn(n,i);case"Polygon":case"MultiPolygon":return n=Ft(a,"Polygon"===r.type?1:2,l),new en(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error("Invalid GeoJSON object.")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\{ *([\w_-]+) *\}/g,ei=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},ni="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",oi=0,si=window.requestAnimationFrame||p("RequestAnimationFrame")||m,ri=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:"EPSG:3857",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:"EPSG:900913"}),xi=document.documentElement.style,wi="ActiveXObject"in window,Li=wi&&!document.addEventListener,Pi="msLaunchUri"in navigator&&!("documentMode"in document),bi=A("webkit"),Ti=A("android"),zi=A("android 2")||A("android 3"),Mi=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&A("Google")&&Mi<537&&!("AudioNode"in window),Zi=!!window.opera,Si=A("chrome"),Ei=A("gecko")&&!bi&&!Zi&&!wi,ki=!Si&&A("safari"),Ai=A("phantom"),Ii="OTransition"in xi,Bi=0===navigator.platform.indexOf("Win"),Oi=wi&&"transition"in xi,Ri="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!zi,Di="MozPerspective"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ii&&!Ai,ji="undefined"!=typeof orientation||A("mobile"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ai,opera12:Ii,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?"MSPointerDown":"pointerdown",te=Fi?"MSPointerMove":"pointermove",ie=Fi?"MSPointerUp":"pointerup",ee=Fi?"MSPointerCancel":"pointercancel",ne=["INPUT","SELECT","OPTION"],oe={},se=!1,re=0,ae=Fi?"MSPointerDown":Ui?"pointerdown":"touchstart",he=Fi?"MSPointerUp":Ui?"pointerup":"touchend",ue="_leaflet_",le="_leaflet_events",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),me=xt(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),fe="webkitTransition"===me||"OTransition"===me?me+"End":"transitionend";if("onselectstart"in document)mi=function(){V(window,"selectstart",$)},fi=function(){q(window,"selectstart",$)};else{var ge=xt(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]="none"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pt(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");V(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,"leaflet-container"+(Vi?" leaflet-touch":"")+(Ki?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(ki?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=at(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Lt(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pt(t.markerPane,"leaflet-zoom-hide"),pt(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=ht("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=ht("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):mt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ht("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),J(i),X(i);var n=this._form=ht("form",t+"-list");e&&(this._map.on("click",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht("a",t+"-toggle",i);o.href="#",o.title="Layers",Vi?(V(o,"click",Q),V(o,"click",this.expand,this)):V(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ht("div",t+"-base",n),this._separator=ht("div",t+"-separator",n),this._overlaysList=ht("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ht("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),J(s),V(s,"click",Q),V(s,"click",o,this),V(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht("div",i,e)),t.imperial&&(this._iScale=ht("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht("div","leaflet-control-attribution"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?"touchstart mousedown":"mousedown",Ae={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Ie={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,"leaflet-zoom-anim")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ie[t.type],this._onMove,this),V(document,Ae[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Lt(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,"leaflet-dragging"),this._lastTarget&&(mt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Ie)q(document,Ie[t],this._onMove,this),q(document,Ae[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:At,_getEdgeIntersection:It,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:"EPSG:3395",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:"EPSG:4326",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Ke=Ge.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht("div","leaflet-default-icon-path",document.body),i=at(t,"background-image")||at(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pt(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=At(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:"Point",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ht("img");pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),this.options.crossOrigin&&(i.crossOrigin=""),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ht("video");if(pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht("source");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Je||this._source.on("preclick",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Je||this._source.off("preclick",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ht("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ht("div",t+"-content-wrapper",i);if(this._contentNode=ht("div",t+"-content",e),J(e),X(this._contentNode),V(e,"contextmenu",Y),this._tipContainer=ht("div",t+"-tip-container",i),this._tip=ht("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht("a",t+"-close-button",i);n.href="#close",n.innerHTML="×",V(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",pt(t,"leaflet-popup-scrolled")):mt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ht("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,"leaflet-tooltip-right"),mt(e,"leaflet-tooltip-left"),mt(e,"leaflet-tooltip-top"),mt(e,"leaflet-tooltip-bottom"),pt(e,"leaflet-tooltip-"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute("src",ni),ut(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),Ti||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return V(n,"load",e(this._tileOnLoad,this,i,n)),V(n,"error",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",o(this._onMouseMove,32,this),this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vn={_initContainer:function(){this._container=ht("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=gn("shape");pt(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=gn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=yn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Lt(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=yn("path");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){q(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht("div","leaflet-zoom-box",this._container),pt(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,"leaflet-crosshair")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook("addHandler","boxZoom",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook("addHandler","doubleClickZoom",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,"leaflet-grab"),mt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Le.addInitHook("addHandler","dragging",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){q(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook("addHandler","keyboard",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook("addHandler","scrollWheelZoom",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){q(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&pt(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook("addHandler","tap",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,"leaflet-touch-zoom"),q(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,"touchmove",this._onTouchMove),q(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook("addHandler","touchZoom",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version="1.3.1+HEAD.ba6f97f",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}}); \ No newline at end of file diff --git a/public/site_libs/leaflet-binding-2.1.1/leaflet.js b/public/site_libs/leaflet-binding-2.1.1/leaflet.js new file mode 100644 index 0000000000000000000000000000000000000000..1eafcbe0a4fb9009493589196193a73c89ab3731 --- /dev/null +++ b/public/site_libs/leaflet-binding-2.1.1/leaflet.js @@ -0,0 +1,2785 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = undefined; + +var _util = require("./util"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var ClusterLayerStore = /*#__PURE__*/function () { + function ClusterLayerStore(group) { + _classCallCheck(this, ClusterLayerStore); + + this._layers = {}; + this._group = group; + } + + _createClass(ClusterLayerStore, [{ + key: "add", + value: function add(layer, id) { + if (typeof id !== "undefined" && id !== null) { + if (this._layers[id]) { + this._group.removeLayer(this._layers[id]); + } + + this._layers[id] = layer; + } + + this._group.addLayer(layer); + } + }, { + key: "remove", + value: function remove(id) { + if (typeof id === "undefined" || id === null) { + return; + } + + id = (0, _util.asArray)(id); + + for (var i = 0; i < id.length; i++) { + if (this._layers[id[i]]) { + this._group.removeLayer(this._layers[id[i]]); + + delete this._layers[id[i]]; + } + } + } + }, { + key: "clear", + value: function clear() { + this._layers = {}; + + this._group.clearLayers(); + } + }]); + + return ClusterLayerStore; +}(); + +exports["default"] = ClusterLayerStore; + + +},{"./util":17}],2:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var ControlStore = /*#__PURE__*/function () { + function ControlStore(map) { + _classCallCheck(this, ControlStore); + + this._controlsNoId = []; + this._controlsById = {}; + this._map = map; + } + + _createClass(ControlStore, [{ + key: "add", + value: function add(control, id, html) { + if (typeof id !== "undefined" && id !== null) { + if (this._controlsById[id]) { + this._map.removeControl(this._controlsById[id]); + } + + this._controlsById[id] = control; + } else { + this._controlsNoId.push(control); + } + + this._map.addControl(control); + } + }, { + key: "get", + value: function get(id) { + var control = null; + + if (this._controlsById[id]) { + control = this._controlsById[id]; + } + + return control; + } + }, { + key: "remove", + value: function remove(id) { + if (this._controlsById[id]) { + var control = this._controlsById[id]; + + this._map.removeControl(control); + + delete this._controlsById[id]; + } + } + }, { + key: "clear", + value: function clear() { + for (var i = 0; i < this._controlsNoId.length; i++) { + var control = this._controlsNoId[i]; + + this._map.removeControl(control); + } + + this._controlsNoId = []; + + for (var key in this._controlsById) { + var _control = this._controlsById[key]; + + this._map.removeControl(_control); + } + + this._controlsById = {}; + } + }]); + + return ControlStore; +}(); + +exports["default"] = ControlStore; + + +},{}],3:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getCRS = getCRS; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _proj4leaflet = require("./global/proj4leaflet"); + +var _proj4leaflet2 = _interopRequireDefault(_proj4leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// Helper function to instanciate a ICRS instance. +function getCRS(crsOptions) { + var crs = _leaflet2["default"].CRS.EPSG3857; // Default Spherical Mercator + + switch (crsOptions.crsClass) { + case "L.CRS.EPSG3857": + crs = _leaflet2["default"].CRS.EPSG3857; + break; + + case "L.CRS.EPSG4326": + crs = _leaflet2["default"].CRS.EPSG4326; + break; + + case "L.CRS.EPSG3395": + crs = _leaflet2["default"].CRS.EPSG3395; + break; + + case "L.CRS.Simple": + crs = _leaflet2["default"].CRS.Simple; + break; + + case "L.Proj.CRS": + if (crsOptions.options && crsOptions.options.bounds) { + crsOptions.options.bounds = _leaflet2["default"].bounds(crsOptions.options.bounds); + } + + if (crsOptions.options && crsOptions.options.transformation) { + crsOptions.options.transformation = new _leaflet2["default"].Transformation(crsOptions.options.transformation[0], crsOptions.options.transformation[1], crsOptions.options.transformation[2], crsOptions.options.transformation[3]); + } + + crs = new _proj4leaflet2["default"].CRS(crsOptions.code, crsOptions.proj4def, crsOptions.options); + break; + + case "L.Proj.CRS.TMS": + if (crsOptions.options && crsOptions.options.bounds) { + crsOptions.options.bounds = _leaflet2["default"].bounds(crsOptions.options.bounds); + } + + if (crsOptions.options && crsOptions.options.transformation) { + crsOptions.options.transformation = _leaflet2["default"].Transformation(crsOptions.options.transformation[0], crsOptions.options.transformation[1], crsOptions.options.transformation[2], crsOptions.options.transformation[3]); + } // L.Proj.CRS.TMS is deprecated as of Leaflet 1.x, fall back to L.Proj.CRS + //crs = new Proj4Leaflet.CRS.TMS(crsOptions.code, crsOptions.proj4def, crsOptions.projectedBounds, crsOptions.options); + + + crs = new _proj4leaflet2["default"].CRS(crsOptions.code, crsOptions.proj4def, crsOptions.options); + break; + } + + return crs; +} + + +},{"./global/leaflet":10,"./global/proj4leaflet":11}],4:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = undefined; + +var _util = require("./util"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var DataFrame = /*#__PURE__*/function () { + function DataFrame() { + _classCallCheck(this, DataFrame); + + this.columns = []; + this.colnames = []; + this.colstrict = []; + this.effectiveLength = 0; + this.colindices = {}; + } + + _createClass(DataFrame, [{ + key: "_updateCachedProperties", + value: function _updateCachedProperties() { + var _this = this; + + this.effectiveLength = 0; + this.colindices = {}; + this.columns.forEach(function (column, i) { + _this.effectiveLength = Math.max(_this.effectiveLength, column.length); + _this.colindices[_this.colnames[i]] = i; + }); + } + }, { + key: "_colIndex", + value: function _colIndex(colname) { + var index = this.colindices[colname]; + if (typeof index === "undefined") return -1; + return index; + } + }, { + key: "col", + value: function col(name, values, strict) { + if (typeof name !== "string") throw new Error("Invalid column name \"" + name + "\""); + + var index = this._colIndex(name); + + if (arguments.length === 1) { + if (index < 0) return null;else return (0, _util.recycle)(this.columns[index], this.effectiveLength); + } + + if (index < 0) { + index = this.colnames.length; + this.colnames.push(name); + } + + this.columns[index] = (0, _util.asArray)(values); + this.colstrict[index] = !!strict; // TODO: Validate strictness (ensure lengths match up with other stricts) + + this._updateCachedProperties(); + + return this; + } + }, { + key: "cbind", + value: function cbind(obj, strict) { + var _this2 = this; + + Object.keys(obj).forEach(function (name) { + var coldata = obj[name]; + + _this2.col(name, coldata); + }); + return this; + } + }, { + key: "get", + value: function get(row, col, missingOK) { + var _this3 = this; + + if (row > this.effectiveLength) throw new Error("Row argument was out of bounds: " + row + " > " + this.effectiveLength); + var colIndex = -1; + + if (typeof col === "undefined") { + var rowData = {}; + this.colnames.forEach(function (name, i) { + rowData[name] = _this3.columns[i][row % _this3.columns[i].length]; + }); + return rowData; + } else if (typeof col === "string") { + colIndex = this._colIndex(col); + } else if (typeof col === "number") { + colIndex = col; + } + + if (colIndex < 0 || colIndex > this.columns.length) { + if (missingOK) return void 0;else throw new Error("Unknown column index: " + col); + } + + return this.columns[colIndex][row % this.columns[colIndex].length]; + } + }, { + key: "nrow", + value: function nrow() { + return this.effectiveLength; + } + }]); + + return DataFrame; +}(); + +exports["default"] = DataFrame; + + +},{"./util":17}],5:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// In RMarkdown's self-contained mode, we don't have a way to carry around the +// images that Leaflet needs but doesn't load into the page. Instead, we'll use +// the unpkg CDN. +if (typeof _leaflet2["default"].Icon.Default.imagePath === "undefined") { + _leaflet2["default"].Icon.Default.imagePath = "https://unpkg.com/leaflet@1.3.1/dist/images/"; +} + + +},{"./global/leaflet":10}],6:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// add texxtsize, textOnly, and style +_leaflet2["default"].Tooltip.prototype.options.textsize = "10px"; +_leaflet2["default"].Tooltip.prototype.options.textOnly = false; +_leaflet2["default"].Tooltip.prototype.options.style = null; // copy original layout to not completely stomp it. + +var initLayoutOriginal = _leaflet2["default"].Tooltip.prototype._initLayout; + +_leaflet2["default"].Tooltip.prototype._initLayout = function () { + initLayoutOriginal.call(this); + this._container.style.fontSize = this.options.textsize; + + if (this.options.textOnly) { + _leaflet2["default"].DomUtil.addClass(this._container, "leaflet-tooltip-text-only"); + } + + if (this.options.style) { + for (var property in this.options.style) { + this._container.style[property] = this.options.style[property]; + } + } +}; + + +},{"./global/leaflet":10}],7:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var protocolRegex = /^\/\//; + +var upgrade_protocol = function upgrade_protocol(urlTemplate) { + if (protocolRegex.test(urlTemplate)) { + if (window.location.protocol === "file:") { + // if in a local file, support http + // http should auto upgrade if necessary + urlTemplate = "http:" + urlTemplate; + } + } + + return urlTemplate; +}; + +var originalLTileLayerInitialize = _leaflet2["default"].TileLayer.prototype.initialize; + +_leaflet2["default"].TileLayer.prototype.initialize = function (urlTemplate, options) { + urlTemplate = upgrade_protocol(urlTemplate); + originalLTileLayerInitialize.call(this, urlTemplate, options); +}; + +var originalLTileLayerWMSInitialize = _leaflet2["default"].TileLayer.WMS.prototype.initialize; + +_leaflet2["default"].TileLayer.WMS.prototype.initialize = function (urlTemplate, options) { + urlTemplate = upgrade_protocol(urlTemplate); + originalLTileLayerWMSInitialize.call(this, urlTemplate, options); +}; + + +},{"./global/leaflet":10}],8:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.HTMLWidgets; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],9:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.jQuery; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],10:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.L; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],11:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.L.Proj; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],12:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.Shiny; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],13:[function(require,module,exports){ +"use strict"; + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _shiny = require("./global/shiny"); + +var _shiny2 = _interopRequireDefault(_shiny); + +var _htmlwidgets = require("./global/htmlwidgets"); + +var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); + +var _util = require("./util"); + +var _crs_utils = require("./crs_utils"); + +var _controlStore = require("./control-store"); + +var _controlStore2 = _interopRequireDefault(_controlStore); + +var _layerManager = require("./layer-manager"); + +var _layerManager2 = _interopRequireDefault(_layerManager); + +var _methods = require("./methods"); + +var _methods2 = _interopRequireDefault(_methods); + +require("./fixup-default-icon"); + +require("./fixup-default-tooltip"); + +require("./fixup-url-protocol"); + +var _dataframe = require("./dataframe"); + +var _dataframe2 = _interopRequireDefault(_dataframe); + +var _clusterLayerStore = require("./cluster-layer-store"); + +var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +window.LeafletWidget = {}; +window.LeafletWidget.utils = {}; + +var methods = window.LeafletWidget.methods = _jquery2["default"].extend({}, _methods2["default"]); + +window.LeafletWidget.DataFrame = _dataframe2["default"]; +window.LeafletWidget.ClusterLayerStore = _clusterLayerStore2["default"]; +window.LeafletWidget.utils.getCRS = _crs_utils.getCRS; // Send updated bounds back to app. Takes a leaflet event object as input. + +function updateBounds(map) { + var id = map.getContainer().id; + var bounds = map.getBounds(); + + _shiny2["default"].onInputChange(id + "_bounds", { + north: bounds.getNorthEast().lat, + east: bounds.getNorthEast().lng, + south: bounds.getSouthWest().lat, + west: bounds.getSouthWest().lng + }); + + _shiny2["default"].onInputChange(id + "_center", { + lng: map.getCenter().lng, + lat: map.getCenter().lat + }); + + _shiny2["default"].onInputChange(id + "_zoom", map.getZoom()); +} + +function preventUnintendedZoomOnScroll(map) { + // Prevent unwanted scroll capturing. Similar in purpose to + // https://github.com/CliffCloud/Leaflet.Sleep but with a + // different set of heuristics. + // The basic idea is that when a mousewheel/DOMMouseScroll + // event is seen, we disable scroll wheel zooming until the + // user moves their mouse cursor or clicks on the map. This + // is slightly trickier than just listening for mousemove, + // because mousemove is fired when the page is scrolled, + // even if the user did not physically move the mouse. We + // handle this by examining the mousemove event's screenX + // and screenY properties; if they change, we know it's a + // "true" move. + // lastScreen can never be null, but its x and y can. + var lastScreen = { + x: null, + y: null + }; + (0, _jquery2["default"])(document).on("mousewheel DOMMouseScroll", "*", function (e) { + // Disable zooming (until the mouse moves or click) + map.scrollWheelZoom.disable(); // Any mousemove events at this screen position will be ignored. + + lastScreen = { + x: e.originalEvent.screenX, + y: e.originalEvent.screenY + }; + }); + (0, _jquery2["default"])(document).on("mousemove", "*", function (e) { + // Did the mouse really move? + if (lastScreen.x !== null && e.screenX !== lastScreen.x || e.screenY !== lastScreen.y) { + // It really moved. Enable zooming. + map.scrollWheelZoom.enable(); + lastScreen = { + x: null, + y: null + }; + } + }); + (0, _jquery2["default"])(document).on("mousedown", ".leaflet", function (e) { + // Clicking always enables zooming. + map.scrollWheelZoom.enable(); + lastScreen = { + x: null, + y: null + }; + }); +} + +_htmlwidgets2["default"].widget({ + name: "leaflet", + type: "output", + factory: function factory(el, width, height) { + var map = null; + return { + // we need to store our map in our returned object. + getMap: function getMap() { + return map; + }, + renderValue: function renderValue(data) { + // Create an appropriate CRS Object if specified + if (data && data.options && data.options.crs) { + data.options.crs = (0, _crs_utils.getCRS)(data.options.crs); + } // As per https://github.com/rstudio/leaflet/pull/294#discussion_r79584810 + + + if (map) { + map.remove(); + + map = function () { + return; + }(); // undefine map + + } + + if (data.options.mapFactory && typeof data.options.mapFactory === "function") { + map = data.options.mapFactory(el, data.options); + } else { + map = _leaflet2["default"].map(el, data.options); + } + + preventUnintendedZoomOnScroll(map); // Store some state in the map object + + map.leafletr = { + // Has the map ever rendered successfully? + hasRendered: false, + // Data to be rendered when resize is called with area != 0 + pendingRenderData: null + }; // Check if the map is rendered statically (no output binding) + + if (_htmlwidgets2["default"].shinyMode && /\bshiny-bound-output\b/.test(el.className)) { + map.id = el.id; // Store the map on the element so we can find it later by ID + + (0, _jquery2["default"])(el).data("leaflet-map", map); // When the map is clicked, send the coordinates back to the app + + map.on("click", function (e) { + _shiny2["default"].onInputChange(map.id + "_click", { + lat: e.latlng.lat, + lng: e.latlng.lng, + ".nonce": Math.random() // Force reactivity if lat/lng hasn't changed + + }); + }); + var groupTimerId = null; + map.on("moveend", function (e) { + updateBounds(e.target); + }).on("layeradd layerremove", function (e) { + // If the layer that's coming or going is a group we created, tell + // the server. + if (map.layerManager.getGroupNameFromLayerGroup(e.layer)) { + // But to avoid chattiness, coalesce events + if (groupTimerId) { + clearTimeout(groupTimerId); + groupTimerId = null; + } + + groupTimerId = setTimeout(function () { + groupTimerId = null; + + _shiny2["default"].onInputChange(map.id + "_groups", map.layerManager.getVisibleGroups()); + }, 100); + } + }); + } + + this.doRenderValue(data, map); + }, + doRenderValue: function doRenderValue(data, map) { + // Leaflet does not behave well when you set up a bunch of layers when + // the map is not visible (width/height == 0). Popups get misaligned + // relative to their owning markers, and the fitBounds calculations + // are off. Therefore we wait until the map is actually showing to + // render the value (we rely on the resize() callback being invoked + // at the appropriate time). + if (el.offsetWidth === 0 || el.offsetHeight === 0) { + map.leafletr.pendingRenderData = data; + return; + } + + map.leafletr.pendingRenderData = null; // Merge data options into defaults + + var options = _jquery2["default"].extend({ + zoomToLimits: "always" + }, data.options); + + if (!map.layerManager) { + map.controls = new _controlStore2["default"](map); + map.layerManager = new _layerManager2["default"](map); + } else { + map.controls.clear(); + map.layerManager.clear(); + } + + var explicitView = false; + + if (data.setView) { + explicitView = true; + map.setView.apply(map, data.setView); + } + + if (data.fitBounds) { + explicitView = true; + methods.fitBounds.apply(map, data.fitBounds); + } + + if (data.flyTo) { + if (!explicitView && !map.leafletr.hasRendered) { + // must be done to give a initial starting point + map.fitWorld(); + } + + explicitView = true; + map.flyTo.apply(map, data.flyTo); + } + + if (data.flyToBounds) { + if (!explicitView && !map.leafletr.hasRendered) { + // must be done to give a initial starting point + map.fitWorld(); + } + + explicitView = true; + methods.flyToBounds.apply(map, data.flyToBounds); + } + + if (data.options.center) { + explicitView = true; + } // Returns true if the zoomToLimits option says that the map should be + // zoomed to map elements. + + + function needsZoom() { + return options.zoomToLimits === "always" || options.zoomToLimits === "first" && !map.leafletr.hasRendered; + } + + if (!explicitView && needsZoom() && !map.getZoom()) { + if (data.limits && !_jquery2["default"].isEmptyObject(data.limits)) { + // Use the natural limits of what's being drawn on the map + // If the size of the bounding box is 0, leaflet gets all weird + var pad = 0.006; + + if (data.limits.lat[0] === data.limits.lat[1]) { + data.limits.lat[0] = data.limits.lat[0] - pad; + data.limits.lat[1] = data.limits.lat[1] + pad; + } + + if (data.limits.lng[0] === data.limits.lng[1]) { + data.limits.lng[0] = data.limits.lng[0] - pad; + data.limits.lng[1] = data.limits.lng[1] + pad; + } + + map.fitBounds([[data.limits.lat[0], data.limits.lng[0]], [data.limits.lat[1], data.limits.lng[1]]]); + } else { + map.fitWorld(); + } + } + + for (var i = 0; data.calls && i < data.calls.length; i++) { + var call = data.calls[i]; + if (methods[call.method]) methods[call.method].apply(map, call.args);else (0, _util.log)("Unknown method " + call.method); + } + + map.leafletr.hasRendered = true; + + if (_htmlwidgets2["default"].shinyMode) { + setTimeout(function () { + updateBounds(map); + }, 1); + } + }, + resize: function resize(width, height) { + if (map) { + map.invalidateSize(); + + if (map.leafletr.pendingRenderData) { + this.doRenderValue(map.leafletr.pendingRenderData, map); + } + } + } + }; + } +}); + +if (_htmlwidgets2["default"].shinyMode) { + _shiny2["default"].addCustomMessageHandler("leaflet-calls", function (data) { + var id = data.id; + var el = document.getElementById(id); + var map = el ? (0, _jquery2["default"])(el).data("leaflet-map") : null; + + if (!map) { + (0, _util.log)("Couldn't find map with id " + id); + return; + } // If the map has not rendered, stash the proposed `leafletProxy()` calls + // in `pendingRenderData.calls` to be run on display via `doRenderValue()`. + // This is necessary if the map has not been rendered. + // If new pendingRenderData is set via a new `leaflet()`, the previous calls will be discarded. + + + if (!map.leafletr.hasRendered) { + map.leafletr.pendingRenderData.calls = map.leafletr.pendingRenderData.calls.concat(data.calls); + return; + } + + for (var i = 0; i < data.calls.length; i++) { + var call = data.calls[i]; + var args = call.args; + + for (var _i = 0; _i < call.evals.length; _i++) { + window.HTMLWidgets.evaluateStringMember(args, call.evals[_i]); + } + + if (call.dependencies) { + _shiny2["default"].renderDependencies(call.dependencies); + } + + if (methods[call.method]) methods[call.method].apply(map, args);else (0, _util.log)("Unknown method " + call.method); + } + }); +} + + +},{"./cluster-layer-store":1,"./control-store":2,"./crs_utils":3,"./dataframe":4,"./fixup-default-icon":5,"./fixup-default-tooltip":6,"./fixup-url-protocol":7,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./layer-manager":14,"./methods":15,"./util":17}],14:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = undefined; + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _util = require("./util"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var LayerManager = /*#__PURE__*/function () { + function LayerManager(map) { + _classCallCheck(this, LayerManager); + + this._map = map; // BEGIN layer indices + // {<groupname>: {<stamp>: layer}} + + this._byGroup = {}; // {<categoryName>: {<stamp>: layer}} + + this._byCategory = {}; // {<categoryName_layerId>: layer} + + this._byLayerId = {}; // {<stamp>: { + // "group": <groupname>, + // "layerId": <layerId>, + // "category": <category>, + // "container": <container> + // } + // } + + this._byStamp = {}; // {<crosstalkGroupName>: {<key>: [<stamp>, <stamp>, ...], ...}} + + this._byCrosstalkGroup = {}; // END layer indices + // {<categoryName>: L.layerGroup} + + this._categoryContainers = {}; // {<groupName>: L.layerGroup} + + this._groupContainers = {}; + } + + _createClass(LayerManager, [{ + key: "addLayer", + value: function addLayer(layer, category, layerId, group, ctGroup, ctKey) { + var _this = this; + + // Was a group provided? + var hasId = typeof layerId === "string"; + var grouped = typeof group === "string"; + var stamp = _leaflet2["default"].Util.stamp(layer) + ""; // This will be the default layer group to add the layer to. + // We may overwrite this let before using it (i.e. if a group is assigned). + // This one liner creates the _categoryContainers[category] entry if it + // doesn't already exist. + + var container = this._categoryContainers[category] = this._categoryContainers[category] || _leaflet2["default"].layerGroup().addTo(this._map); + + var oldLayer = null; + + if (hasId) { + // First, remove any layer with the same category and layerId + var prefixedLayerId = this._layerIdKey(category, layerId); + + oldLayer = this._byLayerId[prefixedLayerId]; + + if (oldLayer) { + this._removeLayer(oldLayer); + } // Update layerId index + + + this._byLayerId[prefixedLayerId] = layer; + } // Update group index + + + if (grouped) { + this._byGroup[group] = this._byGroup[group] || {}; + this._byGroup[group][stamp] = layer; // Since a group is assigned, don't add the layer to the category's layer + // group; instead, use the group's layer group. + // This one liner creates the _groupContainers[group] entry if it doesn't + // already exist. + + container = this.getLayerGroup(group, true); + } // Update category index + + + this._byCategory[category] = this._byCategory[category] || {}; + this._byCategory[category][stamp] = layer; // Update stamp index + + var layerInfo = this._byStamp[stamp] = { + layer: layer, + group: group, + ctGroup: ctGroup, + ctKey: ctKey, + layerId: layerId, + category: category, + container: container, + hidden: false + }; // Update crosstalk group index + + if (ctGroup) { + if (layer.setStyle) { + // Need to save this info so we know what to set opacity to later + layer.options.origOpacity = typeof layer.options.opacity !== "undefined" ? layer.options.opacity : 0.5; + layer.options.origFillOpacity = typeof layer.options.fillOpacity !== "undefined" ? layer.options.fillOpacity : 0.2; + } + + var ctg = this._byCrosstalkGroup[ctGroup]; + + if (!ctg) { + ctg = this._byCrosstalkGroup[ctGroup] = {}; + var crosstalk = global.crosstalk; + + var handleFilter = function handleFilter(e) { + if (!e.value) { + var groupKeys = Object.keys(ctg); + + for (var i = 0; i < groupKeys.length; i++) { + var key = groupKeys[i]; + var _layerInfo = _this._byStamp[ctg[key]]; + + _this._setVisibility(_layerInfo, true); + } + } else { + var selectedKeys = {}; + + for (var _i = 0; _i < e.value.length; _i++) { + selectedKeys[e.value[_i]] = true; + } + + var _groupKeys = Object.keys(ctg); + + for (var _i2 = 0; _i2 < _groupKeys.length; _i2++) { + var _key = _groupKeys[_i2]; + var _layerInfo2 = _this._byStamp[ctg[_key]]; + + _this._setVisibility(_layerInfo2, selectedKeys[_groupKeys[_i2]]); + } + } + }; + + var filterHandle = new crosstalk.FilterHandle(ctGroup); + filterHandle.on("change", handleFilter); + + var handleSelection = function handleSelection(e) { + if (!e.value || !e.value.length) { + var groupKeys = Object.keys(ctg); + + for (var i = 0; i < groupKeys.length; i++) { + var key = groupKeys[i]; + var _layerInfo3 = _this._byStamp[ctg[key]]; + + _this._setOpacity(_layerInfo3, 1.0); + } + } else { + var selectedKeys = {}; + + for (var _i3 = 0; _i3 < e.value.length; _i3++) { + selectedKeys[e.value[_i3]] = true; + } + + var _groupKeys2 = Object.keys(ctg); + + for (var _i4 = 0; _i4 < _groupKeys2.length; _i4++) { + var _key2 = _groupKeys2[_i4]; + var _layerInfo4 = _this._byStamp[ctg[_key2]]; + + _this._setOpacity(_layerInfo4, selectedKeys[_groupKeys2[_i4]] ? 1.0 : 0.2); + } + } + }; + + var selHandle = new crosstalk.SelectionHandle(ctGroup); + selHandle.on("change", handleSelection); + setTimeout(function () { + handleFilter({ + value: filterHandle.filteredKeys + }); + handleSelection({ + value: selHandle.value + }); + }, 100); + } + + if (!ctg[ctKey]) ctg[ctKey] = []; + ctg[ctKey].push(stamp); + } // Add to container + + + if (!layerInfo.hidden) container.addLayer(layer); + return oldLayer; + } + }, { + key: "brush", + value: function brush(bounds, extraInfo) { + var _this2 = this; + + /* eslint-disable no-console */ + // For each Crosstalk group... + Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { + var ctg = _this2._byCrosstalkGroup[ctGroupName]; + var selection = []; // ...iterate over each Crosstalk key (each of which may have multiple + // layers)... + + Object.keys(ctg).forEach(function (ctKey) { + // ...and for each layer... + ctg[ctKey].forEach(function (stamp) { + var layerInfo = _this2._byStamp[stamp]; // ...if it's something with a point... + + if (layerInfo.layer.getLatLng) { + // ... and it's inside the selection bounds... + // TODO: Use pixel containment, not lat/lng containment + if (bounds.contains(layerInfo.layer.getLatLng())) { + // ...add the key to the selection. + selection.push(ctKey); + } + } + }); + }); + new global.crosstalk.SelectionHandle(ctGroupName).set(selection, extraInfo); + }); + } + }, { + key: "unbrush", + value: function unbrush(extraInfo) { + Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { + new global.crosstalk.SelectionHandle(ctGroupName).clear(extraInfo); + }); + } + }, { + key: "_setVisibility", + value: function _setVisibility(layerInfo, visible) { + if (layerInfo.hidden ^ visible) { + return; + } else if (visible) { + layerInfo.container.addLayer(layerInfo.layer); + layerInfo.hidden = false; + } else { + layerInfo.container.removeLayer(layerInfo.layer); + layerInfo.hidden = true; + } + } + }, { + key: "_setOpacity", + value: function _setOpacity(layerInfo, opacity) { + if (layerInfo.layer.setOpacity) { + layerInfo.layer.setOpacity(opacity); + } else if (layerInfo.layer.setStyle) { + layerInfo.layer.setStyle({ + opacity: opacity * layerInfo.layer.options.origOpacity, + fillOpacity: opacity * layerInfo.layer.options.origFillOpacity + }); + } + } + }, { + key: "getLayer", + value: function getLayer(category, layerId) { + return this._byLayerId[this._layerIdKey(category, layerId)]; + } + }, { + key: "removeLayer", + value: function removeLayer(category, layerIds) { + var _this3 = this; + + // Find layer info + _jquery2["default"].each((0, _util.asArray)(layerIds), function (i, layerId) { + var layer = _this3._byLayerId[_this3._layerIdKey(category, layerId)]; + + if (layer) { + _this3._removeLayer(layer); + } + }); + } + }, { + key: "clearLayers", + value: function clearLayers(category) { + var _this4 = this; + + // Find all layers in _byCategory[category] + var catTable = this._byCategory[category]; + + if (!catTable) { + return false; + } // Remove all layers. Make copy of keys to avoid mutating the collection + // behind the iterator you're accessing. + + + var stamps = []; + + _jquery2["default"].each(catTable, function (k, v) { + stamps.push(k); + }); + + _jquery2["default"].each(stamps, function (i, stamp) { + _this4._removeLayer(stamp); + }); + } + }, { + key: "getLayerGroup", + value: function getLayerGroup(group, ensureExists) { + var g = this._groupContainers[group]; + + if (ensureExists && !g) { + this._byGroup[group] = this._byGroup[group] || {}; + g = this._groupContainers[group] = _leaflet2["default"].featureGroup(); + g.groupname = group; + g.addTo(this._map); + } + + return g; + } + }, { + key: "getGroupNameFromLayerGroup", + value: function getGroupNameFromLayerGroup(layerGroup) { + return layerGroup.groupname; + } + }, { + key: "getVisibleGroups", + value: function getVisibleGroups() { + var _this5 = this; + + var result = []; + + _jquery2["default"].each(this._groupContainers, function (k, v) { + if (_this5._map.hasLayer(v)) { + result.push(k); + } + }); + + return result; + } + }, { + key: "getAllGroupNames", + value: function getAllGroupNames() { + var result = []; + + _jquery2["default"].each(this._groupContainers, function (k, v) { + result.push(k); + }); + + return result; + } + }, { + key: "clearGroup", + value: function clearGroup(group) { + var _this6 = this; + + // Find all layers in _byGroup[group] + var groupTable = this._byGroup[group]; + + if (!groupTable) { + return false; + } // Remove all layers. Make copy of keys to avoid mutating the collection + // behind the iterator you're accessing. + + + var stamps = []; + + _jquery2["default"].each(groupTable, function (k, v) { + stamps.push(k); + }); + + _jquery2["default"].each(stamps, function (i, stamp) { + _this6._removeLayer(stamp); + }); + } + }, { + key: "clear", + value: function clear() { + function clearLayerGroup(key, layerGroup) { + layerGroup.clearLayers(); + } // Clear all indices and layerGroups + + + this._byGroup = {}; + this._byCategory = {}; + this._byLayerId = {}; + this._byStamp = {}; + this._byCrosstalkGroup = {}; + + _jquery2["default"].each(this._categoryContainers, clearLayerGroup); + + this._categoryContainers = {}; + + _jquery2["default"].each(this._groupContainers, clearLayerGroup); + + this._groupContainers = {}; + } + }, { + key: "_removeLayer", + value: function _removeLayer(layer) { + var stamp; + + if (typeof layer === "string") { + stamp = layer; + } else { + stamp = _leaflet2["default"].Util.stamp(layer); + } + + var layerInfo = this._byStamp[stamp]; + + if (!layerInfo) { + return false; + } + + layerInfo.container.removeLayer(stamp); + + if (typeof layerInfo.group === "string") { + delete this._byGroup[layerInfo.group][stamp]; + } + + if (typeof layerInfo.layerId === "string") { + delete this._byLayerId[this._layerIdKey(layerInfo.category, layerInfo.layerId)]; + } + + delete this._byCategory[layerInfo.category][stamp]; + delete this._byStamp[stamp]; + + if (layerInfo.ctGroup) { + var ctGroup = this._byCrosstalkGroup[layerInfo.ctGroup]; + var layersForKey = ctGroup[layerInfo.ctKey]; + var idx = layersForKey ? layersForKey.indexOf(stamp) : -1; + + if (idx >= 0) { + if (layersForKey.length === 1) { + delete ctGroup[layerInfo.ctKey]; + } else { + layersForKey.splice(idx, 1); + } + } + } + } + }, { + key: "_layerIdKey", + value: function _layerIdKey(category, layerId) { + return category + "\n" + layerId; + } + }]); + + return LayerManager; +}(); + +exports["default"] = LayerManager; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./global/jquery":9,"./global/leaflet":10,"./util":17}],15:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _shiny = require("./global/shiny"); + +var _shiny2 = _interopRequireDefault(_shiny); + +var _htmlwidgets = require("./global/htmlwidgets"); + +var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); + +var _util = require("./util"); + +var _crs_utils = require("./crs_utils"); + +var _dataframe = require("./dataframe"); + +var _dataframe2 = _interopRequireDefault(_dataframe); + +var _clusterLayerStore = require("./cluster-layer-store"); + +var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); + +var _mipmapper = require("./mipmapper"); + +var _mipmapper2 = _interopRequireDefault(_mipmapper); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var methods = {}; +exports["default"] = methods; + +function mouseHandler(mapId, layerId, group, eventName, extraInfo) { + return function (e) { + if (!_htmlwidgets2["default"].shinyMode) return; + var latLng = e.target.getLatLng ? e.target.getLatLng() : e.latlng; + + if (latLng) { + // retrieve only lat, lon values to remove prototype + // and extra parameters added by 3rd party modules + // these objects are for json serialization, not javascript + var latLngVal = _leaflet2["default"].latLng(latLng); // make sure it has consistent shape + + + latLng = { + lat: latLngVal.lat, + lng: latLngVal.lng + }; + } + + var eventInfo = _jquery2["default"].extend({ + id: layerId, + ".nonce": Math.random() // force reactivity + + }, group !== null ? { + group: group + } : null, latLng, extraInfo); + + _shiny2["default"].onInputChange(mapId + "_" + eventName, eventInfo); + }; +} + +methods.mouseHandler = mouseHandler; + +methods.clearGroup = function (group) { + var _this = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, v) { + _this.layerManager.clearGroup(v); + }); +}; + +methods.setView = function (center, zoom, options) { + this.setView(center, zoom, options); +}; + +methods.fitBounds = function (lat1, lng1, lat2, lng2, options) { + this.fitBounds([[lat1, lng1], [lat2, lng2]], options); +}; + +methods.flyTo = function (center, zoom, options) { + this.flyTo(center, zoom, options); +}; + +methods.flyToBounds = function (lat1, lng1, lat2, lng2, options) { + this.flyToBounds([[lat1, lng1], [lat2, lng2]], options); +}; + +methods.setMaxBounds = function (lat1, lng1, lat2, lng2) { + this.setMaxBounds([[lat1, lng1], [lat2, lng2]]); +}; + +methods.addPopups = function (lat, lng, popup, layerId, group, options) { + var _this2 = this; + + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("popup", popup).col("layerId", layerId).col("group", group).cbind(options); + + var _loop = function _loop(i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { + (function () { + var popup = _leaflet2["default"].popup(df.get(i)).setLatLng([df.get(i, "lat"), df.get(i, "lng")]).setContent(df.get(i, "popup")); + + var thisId = df.get(i, "layerId"); + var thisGroup = df.get(i, "group"); + this.layerManager.addLayer(popup, "popup", thisId, thisGroup); + }).call(_this2); + } + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop(i); + } +}; + +methods.removePopup = function (layerId) { + this.layerManager.removeLayer("popup", layerId); +}; + +methods.clearPopups = function () { + this.layerManager.clearLayers("popup"); +}; + +methods.addTiles = function (urlTemplate, layerId, group, options) { + this.layerManager.addLayer(_leaflet2["default"].tileLayer(urlTemplate, options), "tile", layerId, group); +}; + +methods.removeTiles = function (layerId) { + this.layerManager.removeLayer("tile", layerId); +}; + +methods.clearTiles = function () { + this.layerManager.clearLayers("tile"); +}; + +methods.addWMSTiles = function (baseUrl, layerId, group, options) { + if (options && options.crs) { + options.crs = (0, _crs_utils.getCRS)(options.crs); + } + + this.layerManager.addLayer(_leaflet2["default"].tileLayer.wms(baseUrl, options), "tile", layerId, group); +}; // Given: +// {data: ["a", "b", "c"], index: [0, 1, 0, 2]} +// returns: +// ["a", "b", "a", "c"] + + +function unpackStrings(iconset) { + if (!iconset) { + return iconset; + } + + if (typeof iconset.index === "undefined") { + return iconset; + } + + iconset.data = (0, _util.asArray)(iconset.data); + iconset.index = (0, _util.asArray)(iconset.index); + return _jquery2["default"].map(iconset.index, function (e, i) { + return iconset.data[e]; + }); +} + +function addMarkers(map, df, group, clusterOptions, clusterId, markerFunc) { + (function () { + var _this3 = this; + + var clusterGroup = this.layerManager.getLayer("cluster", clusterId), + cluster = clusterOptions !== null; + + if (cluster && !clusterGroup) { + clusterGroup = _leaflet2["default"].markerClusterGroup.layerSupport(clusterOptions); + + if (clusterOptions.freezeAtZoom) { + var freezeAtZoom = clusterOptions.freezeAtZoom; + delete clusterOptions.freezeAtZoom; + clusterGroup.freezeAtZoom(freezeAtZoom); + } + + clusterGroup.clusterLayerStore = new _clusterLayerStore2["default"](clusterGroup); + } + + var extraInfo = cluster ? { + clusterId: clusterId + } : {}; + + var _loop2 = function _loop2(i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { + (function () { + var marker = markerFunc(df, i); + var thisId = df.get(i, "layerId"); + var thisGroup = cluster ? null : df.get(i, "group"); + + if (cluster) { + clusterGroup.clusterLayerStore.add(marker, thisId); + } else { + this.layerManager.addLayer(marker, "marker", thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); + } + + var popup = df.get(i, "popup"); + var popupOptions = df.get(i, "popupOptions"); + + if (popup !== null) { + if (popupOptions !== null) { + marker.bindPopup(popup, popupOptions); + } else { + marker.bindPopup(popup); + } + } + + var label = df.get(i, "label"); + var labelOptions = df.get(i, "labelOptions"); + + if (label !== null) { + if (labelOptions !== null) { + if (labelOptions.permanent) { + marker.bindTooltip(label, labelOptions).openTooltip(); + } else { + marker.bindTooltip(label, labelOptions); + } + } else { + marker.bindTooltip(label); + } + } + + marker.on("click", mouseHandler(this.id, thisId, thisGroup, "marker_click", extraInfo), this); + marker.on("mouseover", mouseHandler(this.id, thisId, thisGroup, "marker_mouseover", extraInfo), this); + marker.on("mouseout", mouseHandler(this.id, thisId, thisGroup, "marker_mouseout", extraInfo), this); + marker.on("dragend", mouseHandler(this.id, thisId, thisGroup, "marker_dragend", extraInfo), this); + }).call(_this3); + } + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop2(i); + } + + if (cluster) { + this.layerManager.addLayer(clusterGroup, "cluster", clusterId, group); + } + }).call(map); +} + +methods.addGenericMarkers = addMarkers; + +methods.addMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { + var icondf; + var getIcon; + + if (icon) { + // Unpack icons + icon.iconUrl = unpackStrings(icon.iconUrl); + icon.iconRetinaUrl = unpackStrings(icon.iconRetinaUrl); + icon.shadowUrl = unpackStrings(icon.shadowUrl); + icon.shadowRetinaUrl = unpackStrings(icon.shadowRetinaUrl); // This cbinds the icon URLs and any other icon options; they're all + // present on the icon object. + + icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. + + getIcon = function getIcon(i) { + var opts = icondf.get(i); + + if (!opts.iconUrl) { + return new _leaflet2["default"].Icon.Default(); + } // Composite options (like points or sizes) are passed from R with each + // individual component as its own option. We need to combine them now + // into their composite form. + + + if (opts.iconWidth) { + opts.iconSize = [opts.iconWidth, opts.iconHeight]; + } + + if (opts.shadowWidth) { + opts.shadowSize = [opts.shadowWidth, opts.shadowHeight]; + } + + if (opts.iconAnchorX) { + opts.iconAnchor = [opts.iconAnchorX, opts.iconAnchorY]; + } + + if (opts.shadowAnchorX) { + opts.shadowAnchor = [opts.shadowAnchorX, opts.shadowAnchorY]; + } + + if (opts.popupAnchorX) { + opts.popupAnchor = [opts.popupAnchorX, opts.popupAnchorY]; + } + + return new _leaflet2["default"].Icon(opts); + }; + } + + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); + if (icon) icondf.effectiveLength = df.nrow(); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + var options = df.get(i); + if (icon) options.icon = getIcon(i); + return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); + }); + } +}; + +methods.addAwesomeMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { + var icondf; + var getIcon; + + if (icon) { + // This cbinds the icon URLs and any other icon options; they're all + // present on the icon object. + icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. + + getIcon = function getIcon(i) { + var opts = icondf.get(i); + + if (!opts) { + return new _leaflet2["default"].AwesomeMarkers.icon(); + } + + if (opts.squareMarker) { + opts.className = "awesome-marker awesome-marker-square"; + } + + return new _leaflet2["default"].AwesomeMarkers.icon(opts); + }; + } + + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); + if (icon) icondf.effectiveLength = df.nrow(); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + var options = df.get(i); + if (icon) options.icon = getIcon(i); + return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); + }); + } +}; + +function addLayers(map, category, df, layerFunc) { + var _loop3 = function _loop3(i) { + (function () { + var layer = layerFunc(df, i); + + if (!_jquery2["default"].isEmptyObject(layer)) { + var thisId = df.get(i, "layerId"); + var thisGroup = df.get(i, "group"); + this.layerManager.addLayer(layer, category, thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); + + if (layer.bindPopup) { + var popup = df.get(i, "popup"); + var popupOptions = df.get(i, "popupOptions"); + + if (popup !== null) { + if (popupOptions !== null) { + layer.bindPopup(popup, popupOptions); + } else { + layer.bindPopup(popup); + } + } + } + + if (layer.bindTooltip) { + var label = df.get(i, "label"); + var labelOptions = df.get(i, "labelOptions"); + + if (label !== null) { + if (labelOptions !== null) { + layer.bindTooltip(label, labelOptions); + } else { + layer.bindTooltip(label); + } + } + } + + layer.on("click", mouseHandler(this.id, thisId, thisGroup, category + "_click"), this); + layer.on("mouseover", mouseHandler(this.id, thisId, thisGroup, category + "_mouseover"), this); + layer.on("mouseout", mouseHandler(this.id, thisId, thisGroup, category + "_mouseout"), this); + var highlightStyle = df.get(i, "highlightOptions"); + + if (!_jquery2["default"].isEmptyObject(highlightStyle)) { + var defaultStyle = {}; + + _jquery2["default"].each(highlightStyle, function (k, v) { + if (k != "bringToFront" && k != "sendToBack") { + if (df.get(i, k)) { + defaultStyle[k] = df.get(i, k); + } + } + }); + + layer.on("mouseover", function (e) { + this.setStyle(highlightStyle); + + if (highlightStyle.bringToFront) { + this.bringToFront(); + } + }); + layer.on("mouseout", function (e) { + this.setStyle(defaultStyle); + + if (highlightStyle.sendToBack) { + this.bringToBack(); + } + }); + } + } + }).call(map); + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop3(i); + } +} + +methods.addGenericLayers = addLayers; + +methods.addCircles = function (lat, lng, radius, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions, crosstalkOptions) { + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options).cbind(crosstalkOptions || {}); + addLayers(this, "shape", df, function (df, i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng")) && _jquery2["default"].isNumeric(df.get(i, "radius"))) { + return _leaflet2["default"].circle([df.get(i, "lat"), df.get(i, "lng")], df.get(i, "radius"), df.get(i)); + } else { + return null; + } + }); + } +}; + +methods.addCircleMarkers = function (lat, lng, radius, layerId, group, options, clusterOptions, clusterId, popup, popupOptions, label, labelOptions, crosstalkOptions) { + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(crosstalkOptions || {}).cbind(options); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + return _leaflet2["default"].circleMarker([df.get(i, "lat"), df.get(i, "lng")], df.get(i)); + }); + } +}; +/* + * @param lat Array of arrays of latitude coordinates for polylines + * @param lng Array of arrays of longitude coordinates for polylines + */ + + +methods.addPolylines = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + if (polygons.length > 0) { + var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + var shapes = df.get(i, "shapes"); + shapes = shapes.map(function (shape) { + return _htmlwidgets2["default"].dataframeToD3(shape[0]); + }); + + if (shapes.length > 1) { + return _leaflet2["default"].polyline(shapes, df.get(i)); + } else { + return _leaflet2["default"].polyline(shapes[0], df.get(i)); + } + }); + } +}; + +methods.removeMarker = function (layerId) { + this.layerManager.removeLayer("marker", layerId); +}; + +methods.clearMarkers = function () { + this.layerManager.clearLayers("marker"); +}; + +methods.removeMarkerCluster = function (layerId) { + this.layerManager.removeLayer("cluster", layerId); +}; + +methods.removeMarkerFromCluster = function (layerId, clusterId) { + var cluster = this.layerManager.getLayer("cluster", clusterId); + if (!cluster) return; + cluster.clusterLayerStore.remove(layerId); +}; + +methods.clearMarkerClusters = function () { + this.layerManager.clearLayers("cluster"); +}; + +methods.removeShape = function (layerId) { + this.layerManager.removeLayer("shape", layerId); +}; + +methods.clearShapes = function () { + this.layerManager.clearLayers("shape"); +}; + +methods.addRectangles = function (lat1, lng1, lat2, lng2, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + var df = new _dataframe2["default"]().col("lat1", lat1).col("lng1", lng1).col("lat2", lat2).col("lng2", lng2).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat1")) && _jquery2["default"].isNumeric(df.get(i, "lng1")) && _jquery2["default"].isNumeric(df.get(i, "lat2")) && _jquery2["default"].isNumeric(df.get(i, "lng2"))) { + return _leaflet2["default"].rectangle([[df.get(i, "lat1"), df.get(i, "lng1")], [df.get(i, "lat2"), df.get(i, "lng2")]], df.get(i)); + } else { + return null; + } + }); +}; +/* + * @param lat Array of arrays of latitude coordinates for polygons + * @param lng Array of arrays of longitude coordinates for polygons + */ + + +methods.addPolygons = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + if (polygons.length > 0) { + var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + // This code used to use L.multiPolygon, but that caused + // double-click on a multipolygon to fail to zoom in on the + // map. Surprisingly, putting all the rings in a single + // polygon seems to still work; complicated multipolygons + // are still rendered correctly. + var shapes = df.get(i, "shapes").map(function (polygon) { + return polygon.map(_htmlwidgets2["default"].dataframeToD3); + }).reduce(function (acc, val) { + return acc.concat(val); + }, []); + return _leaflet2["default"].polygon(shapes, df.get(i)); + }); + } +}; + +methods.addGeoJSON = function (data, layerId, group, style) { + // This time, self is actually needed because the callbacks below need + // to access both the inner and outer senses of "this" + var self = this; + + if (typeof data === "string") { + data = JSON.parse(data); + } + + var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); + + var gjlayer = _leaflet2["default"].geoJson(data, { + style: function style(feature) { + if (feature.style || feature.properties.style) { + return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); + } else { + return globalStyle; + } + }, + onEachFeature: function onEachFeature(feature, layer) { + var extraInfo = { + featureId: feature.id, + properties: feature.properties + }; + var popup = feature.properties ? feature.properties.popup : null; + if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); + layer.on("click", mouseHandler(self.id, layerId, group, "geojson_click", extraInfo), this); + layer.on("mouseover", mouseHandler(self.id, layerId, group, "geojson_mouseover", extraInfo), this); + layer.on("mouseout", mouseHandler(self.id, layerId, group, "geojson_mouseout", extraInfo), this); + } + }); + + this.layerManager.addLayer(gjlayer, "geojson", layerId, group); +}; + +methods.removeGeoJSON = function (layerId) { + this.layerManager.removeLayer("geojson", layerId); +}; + +methods.clearGeoJSON = function () { + this.layerManager.clearLayers("geojson"); +}; + +methods.addTopoJSON = function (data, layerId, group, style) { + // This time, self is actually needed because the callbacks below need + // to access both the inner and outer senses of "this" + var self = this; + + if (typeof data === "string") { + data = JSON.parse(data); + } + + var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); + + var gjlayer = _leaflet2["default"].geoJson(null, { + style: function style(feature) { + if (feature.style || feature.properties.style) { + return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); + } else { + return globalStyle; + } + }, + onEachFeature: function onEachFeature(feature, layer) { + var extraInfo = { + featureId: feature.id, + properties: feature.properties + }; + var popup = feature.properties.popup; + if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); + layer.on("click", mouseHandler(self.id, layerId, group, "topojson_click", extraInfo), this); + layer.on("mouseover", mouseHandler(self.id, layerId, group, "topojson_mouseover", extraInfo), this); + layer.on("mouseout", mouseHandler(self.id, layerId, group, "topojson_mouseout", extraInfo), this); + } + }); + + global.omnivore.topojson.parse(data, null, gjlayer); + this.layerManager.addLayer(gjlayer, "topojson", layerId, group); +}; + +methods.removeTopoJSON = function (layerId) { + this.layerManager.removeLayer("topojson", layerId); +}; + +methods.clearTopoJSON = function () { + this.layerManager.clearLayers("topojson"); +}; + +methods.addControl = function (html, position, layerId, classes) { + function onAdd(map) { + var div = _leaflet2["default"].DomUtil.create("div", classes); + + if (typeof layerId !== "undefined" && layerId !== null) { + div.setAttribute("id", layerId); + } + + this._div = div; // It's possible for window.Shiny to be true but Shiny.initializeInputs to + // not be, when a static leaflet widget is included as part of the shiny + // UI directly (not through leafletOutput or uiOutput). In this case we + // don't do the normal Shiny stuff as that will all happen when Shiny + // itself loads and binds the entire doc. + + if (window.Shiny && _shiny2["default"].initializeInputs) { + _shiny2["default"].renderHtml(html, this._div); + + _shiny2["default"].initializeInputs(this._div); + + _shiny2["default"].bindAll(this._div); + } else { + this._div.innerHTML = html; + } + + return this._div; + } + + function onRemove(map) { + if (window.Shiny && _shiny2["default"].unbindAll) { + _shiny2["default"].unbindAll(this._div); + } + } + + var Control = _leaflet2["default"].Control.extend({ + options: { + position: position + }, + onAdd: onAdd, + onRemove: onRemove + }); + + this.controls.add(new Control(), layerId, html); +}; + +methods.addCustomControl = function (control, layerId) { + this.controls.add(control, layerId); +}; + +methods.removeControl = function (layerId) { + this.controls.remove(layerId); +}; + +methods.getControl = function (layerId) { + this.controls.get(layerId); +}; + +methods.clearControls = function () { + this.controls.clear(); +}; + +methods.addLegend = function (options) { + var legend = _leaflet2["default"].control({ + position: options.position + }); + + var gradSpan; + + legend.onAdd = function (map) { + var div = _leaflet2["default"].DomUtil.create("div", options.className), + colors = options.colors, + labels = options.labels, + legendHTML = ""; + + if (options.type === "numeric") { + // # Formatting constants. + var singleBinHeight = 20; // The distance between tick marks, in px + + var vMargin = 8; // If 1st tick mark starts at top of gradient, how + // many extra px are needed for the top half of the + // 1st label? (ditto for last tick mark/label) + + var tickWidth = 4; // How wide should tick marks be, in px? + + var labelPadding = 6; // How much distance to reserve for tick mark? + // (Must be >= tickWidth) + // # Derived formatting parameters. + // What's the height of a single bin, in percentage (of gradient height)? + // It might not just be 1/(n-1), if the gradient extends past the tick + // marks (which can be the case for pretty cut points). + + var singleBinPct = (options.extra.p_n - options.extra.p_1) / (labels.length - 1); // Each bin is `singleBinHeight` high. How tall is the gradient? + + var totalHeight = 1 / singleBinPct * singleBinHeight + 1; // How far should the first tick be shifted down, relative to the top + // of the gradient? + + var tickOffset = singleBinHeight / singleBinPct * options.extra.p_1; + gradSpan = (0, _jquery2["default"])("<span/>").css({ + "background": "linear-gradient(" + colors + ")", + "opacity": options.opacity, + "height": totalHeight + "px", + "width": "18px", + "display": "block", + "margin-top": vMargin + "px" + }); + var leftDiv = (0, _jquery2["default"])("<div/>").css("float", "left"), + rightDiv = (0, _jquery2["default"])("<div/>").css("float", "left"); + leftDiv.append(gradSpan); + (0, _jquery2["default"])(div).append(leftDiv).append(rightDiv).append((0, _jquery2["default"])("<br>")); // Have to attach the div to the body at this early point, so that the + // svg text getComputedTextLength() actually works, below. + + document.body.appendChild(div); + var ns = "http://www.w3.org/2000/svg"; + var svg = document.createElementNS(ns, "svg"); + rightDiv.append(svg); + var g = document.createElementNS(ns, "g"); + (0, _jquery2["default"])(g).attr("transform", "translate(0, " + vMargin + ")"); + svg.appendChild(g); // max label width needed to set width of svg, and right-justify text + + var maxLblWidth = 0; // Create tick marks and labels + + _jquery2["default"].each(labels, function (i, label) { + var y = tickOffset + i * singleBinHeight + 0.5; + var thisLabel = document.createElementNS(ns, "text"); + (0, _jquery2["default"])(thisLabel).text(labels[i]).attr("y", y).attr("dx", labelPadding).attr("dy", "0.5ex"); + g.appendChild(thisLabel); + maxLblWidth = Math.max(maxLblWidth, thisLabel.getComputedTextLength()); + var thisTick = document.createElementNS(ns, "line"); + (0, _jquery2["default"])(thisTick).attr("x1", 0).attr("x2", tickWidth).attr("y1", y).attr("y2", y).attr("stroke-width", 1); + g.appendChild(thisTick); + }); // Now that we know the max label width, we can right-justify + + + (0, _jquery2["default"])(svg).find("text").attr("dx", labelPadding + maxLblWidth).attr("text-anchor", "end"); // Final size for <svg> + + (0, _jquery2["default"])(svg).css({ + width: maxLblWidth + labelPadding + "px", + height: totalHeight + vMargin * 2 + "px" + }); + + if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { + (0, _jquery2["default"])(div).append("<div><i style=\"" + "background:" + options.na_color + ";opacity:" + options.opacity + ";margin-right:" + labelPadding + "px" + ";\"></i>" + options.na_label + "</div>"); + } + } else { + if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { + colors.push(options.na_color); + labels.push(options.na_label); + } + + for (var i = 0; i < colors.length; i++) { + legendHTML += "<i style=\"background:" + colors[i] + ";opacity:" + options.opacity + "\"></i> " + labels[i] + "<br>"; + } + + div.innerHTML = legendHTML; + } + + if (options.title) (0, _jquery2["default"])(div).prepend("<div style=\"margin-bottom:3px\"><strong>" + options.title + "</strong></div>"); + return div; + }; + + if (options.group) { + // Auto generate a layerID if not provided + if (!options.layerId) { + options.layerId = _leaflet2["default"].Util.stamp(legend); + } + + var map = this; + map.on("overlayadd", function (e) { + if (e.name === options.group) { + map.controls.add(legend, options.layerId); + } + }); + map.on("overlayremove", function (e) { + if (e.name === options.group) { + map.controls.remove(options.layerId); + } + }); + map.on("groupadd", function (e) { + if (e.name === options.group) { + map.controls.add(legend, options.layerId); + } + }); + map.on("groupremove", function (e) { + if (e.name === options.group) { + map.controls.remove(options.layerId); + } + }); + } + + this.controls.add(legend, options.layerId); +}; + +methods.addLayersControl = function (baseGroups, overlayGroups, options) { + var _this4 = this; + + // Only allow one layers control at a time + methods.removeLayersControl.call(this); + var firstLayer = true; + var base = {}; + + _jquery2["default"].each((0, _util.asArray)(baseGroups), function (i, g) { + var layer = _this4.layerManager.getLayerGroup(g, true); + + if (layer) { + base[g] = layer; // Check if >1 base layers are visible; if so, hide all but the first one + + if (_this4.hasLayer(layer)) { + if (firstLayer) { + firstLayer = false; + } else { + _this4.removeLayer(layer); + } + } + } + }); + + var overlay = {}; + + _jquery2["default"].each((0, _util.asArray)(overlayGroups), function (i, g) { + var layer = _this4.layerManager.getLayerGroup(g, true); + + if (layer) { + overlay[g] = layer; + } + }); + + this.currentLayersControl = _leaflet2["default"].control.layers(base, overlay, options); + this.addControl(this.currentLayersControl); +}; + +methods.removeLayersControl = function () { + if (this.currentLayersControl) { + this.removeControl(this.currentLayersControl); + this.currentLayersControl = null; + } +}; + +methods.addScaleBar = function (options) { + // Only allow one scale bar at a time + methods.removeScaleBar.call(this); + + var scaleBar = _leaflet2["default"].control.scale(options).addTo(this); + + this.currentScaleBar = scaleBar; +}; + +methods.removeScaleBar = function () { + if (this.currentScaleBar) { + this.currentScaleBar.remove(); + this.currentScaleBar = null; + } +}; + +methods.hideGroup = function (group) { + var _this5 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this5.layerManager.getLayerGroup(g, true); + + if (layer) { + _this5.removeLayer(layer); + } + }); +}; + +methods.showGroup = function (group) { + var _this6 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this6.layerManager.getLayerGroup(g, true); + + if (layer) { + _this6.addLayer(layer); + } + }); +}; + +function setupShowHideGroupsOnZoom(map) { + if (map.leafletr._hasInitializedShowHideGroups) { + return; + } + + map.leafletr._hasInitializedShowHideGroups = true; + + function setVisibility(layer, visible, group) { + if (visible !== map.hasLayer(layer)) { + if (visible) { + map.addLayer(layer); + map.fire("groupadd", { + "name": group, + "layer": layer + }); + } else { + map.removeLayer(layer); + map.fire("groupremove", { + "name": group, + "layer": layer + }); + } + } + } + + function showHideGroupsOnZoom() { + if (!map.layerManager) return; + var zoom = map.getZoom(); + map.layerManager.getAllGroupNames().forEach(function (group) { + var layer = map.layerManager.getLayerGroup(group, false); + + if (layer && typeof layer.zoomLevels !== "undefined") { + setVisibility(layer, layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0, group); + } + }); + } + + map.showHideGroupsOnZoom = showHideGroupsOnZoom; + map.on("zoomend", showHideGroupsOnZoom); +} + +methods.setGroupOptions = function (group, options) { + var _this7 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this7.layerManager.getLayerGroup(g, true); // This slightly tortured check is because 0 is a valid value for zoomLevels + + + if (typeof options.zoomLevels !== "undefined" && options.zoomLevels !== null) { + layer.zoomLevels = (0, _util.asArray)(options.zoomLevels); + } + }); + + setupShowHideGroupsOnZoom(this); + this.showHideGroupsOnZoom(); +}; + +methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, group) { + // uri is a data URI containing an image. We want to paint this image as a + // layer at (top-left) bounds[0] to (bottom-right) bounds[1]. + // We can't simply use ImageOverlay, as it uses bilinear scaling which looks + // awful as you zoom in (and sometimes shifts positions or disappears). + // Instead, we'll use a TileLayer.Canvas to draw pieces of the image. + // First, some helper functions. + // degree2tile converts latitude, longitude, and zoom to x and y tile + // numbers. The tile numbers returned can be non-integral, as there's no + // reason to expect that the lat/lng inputs are exactly on the border of two + // tiles. + // + // We'll use this to convert the bounds we got from the server, into coords + // in tile-space at a given zoom level. Note that once we do the conversion, + // we don't to do any more trigonometry to convert between pixel coordinates + // and tile coordinates; the source image pixel coords, destination canvas + // pixel coords, and tile coords all can be scaled linearly. + function degree2tile(lat, lng, zoom) { + // See http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames + var latRad = lat * Math.PI / 180; + var n = Math.pow(2, zoom); + var x = (lng + 180) / 360 * n; + var y = (1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2 * n; + return { + x: x, + y: y + }; + } // Given a range [from,to) and either one or two numbers, returns true if + // there is any overlap between [x,x1) and the range--or if x1 is omitted, + // then returns true if x is within [from,to). + + + function overlap(from, to, x, + /* optional */ + x1) { + if (arguments.length == 3) x1 = x; + return x < to && x1 >= from; + } + + function getCanvasSmoothingProperty(ctx) { + var candidates = ["imageSmoothingEnabled", "mozImageSmoothingEnabled", "webkitImageSmoothingEnabled", "msImageSmoothingEnabled"]; + + for (var i = 0; i < candidates.length; i++) { + if (typeof ctx[candidates[i]] !== "undefined") { + return candidates[i]; + } + } + + return null; + } // Our general strategy is to: + // 1. Load the data URI in an Image() object, so we can get its pixel + // dimensions and the underlying image data. (We could have done this + // by not encoding as PNG at all but just send an array of RGBA values + // from the server, but that would inflate the JSON too much.) + // 2. Create a hidden canvas that we use just to extract the image data + // from the Image (using Context2D.getImageData()). + // 3. Create a TileLayer.Canvas and add it to the map. + // We want to synchronously create and attach the TileLayer.Canvas (so an + // immediate call to clearRasters() will be respected, for example), but + // Image loads its data asynchronously. Fortunately we can resolve this + // by putting TileLayer.Canvas into async mode, which will let us create + // and attach the layer but have it wait until the image is loaded before + // it actually draws anything. + // These are the variables that we will populate once the image is loaded. + + + var imgData = null; // 1d row-major array, four [0-255] integers per pixel + + var imgDataMipMapper = null; + var w = null; // image width in pixels + + var h = null; // image height in pixels + // We'll use this array to store callbacks that need to be invoked once + // imgData, w, and h have been resolved. + + var imgDataCallbacks = []; // Consumers of imgData, w, and h can call this to be notified when data + // is available. + + function getImageData(callback) { + if (imgData != null) { + // Must not invoke the callback immediately; it's too confusing and + // fragile to have a function invoke the callback *either* immediately + // or in the future. Better to be consistent here. + setTimeout(function () { + callback(imgData, w, h, imgDataMipMapper); + }, 0); + } else { + imgDataCallbacks.push(callback); + } + } + + var img = new Image(); + + img.onload = function () { + // Save size + w = img.width; + h = img.height; // Create a dummy canvas to extract the image data + + var imgDataCanvas = document.createElement("canvas"); + imgDataCanvas.width = w; + imgDataCanvas.height = h; + imgDataCanvas.style.display = "none"; + document.body.appendChild(imgDataCanvas); + var imgDataCtx = imgDataCanvas.getContext("2d"); + imgDataCtx.drawImage(img, 0, 0); // Save the image data. + + imgData = imgDataCtx.getImageData(0, 0, w, h).data; + imgDataMipMapper = new _mipmapper2["default"](img); // Done with the canvas, remove it from the page so it can be gc'd. + + document.body.removeChild(imgDataCanvas); // Alert any getImageData callers who are waiting. + + for (var i = 0; i < imgDataCallbacks.length; i++) { + imgDataCallbacks[i](imgData, w, h, imgDataMipMapper); + } + + imgDataCallbacks = []; + }; + + img.src = uri; + + var canvasTiles = _leaflet2["default"].gridLayer({ + opacity: opacity, + attribution: attribution, + detectRetina: true, + async: true + }); // NOTE: The done() function MUST NOT be invoked until after the current + // tick; done() looks in Leaflet's tile cache for the current tile, and + // since it's still being constructed, it won't be found. + + + canvasTiles.createTile = function (tilePoint, done) { + var zoom = tilePoint.z; + + var canvas = _leaflet2["default"].DomUtil.create("canvas"); + + var error; // setup tile width and height according to the options + + var size = this.getTileSize(); + canvas.width = size.x; + canvas.height = size.y; + getImageData(function (imgData, w, h, mipmapper) { + try { + // The Context2D we'll being drawing onto. It's always 256x256. + var ctx = canvas.getContext("2d"); // Convert our image data's top-left and bottom-right locations into + // x/y tile coordinates. This is essentially doing a spherical mercator + // projection, then multiplying by 2^zoom. + + var topLeft = degree2tile(bounds[0][0], bounds[0][1], zoom); + var bottomRight = degree2tile(bounds[1][0], bounds[1][1], zoom); // The size of the image in x/y tile coordinates. + + var extent = { + x: bottomRight.x - topLeft.x, + y: bottomRight.y - topLeft.y + }; // Short circuit if tile is totally disjoint from image. + + if (!overlap(tilePoint.x, tilePoint.x + 1, topLeft.x, bottomRight.x)) return; + if (!overlap(tilePoint.y, tilePoint.y + 1, topLeft.y, bottomRight.y)) return; // The linear resolution of the tile we're drawing is always 256px per tile unit. + // If the linear resolution (in either direction) of the image is less than 256px + // per tile unit, then use nearest neighbor; otherwise, use the canvas's built-in + // scaling. + + var imgRes = { + x: w / extent.x, + y: h / extent.y + }; // We can do the actual drawing in one of three ways: + // - Call drawImage(). This is easy and fast, and results in smooth + // interpolation (bilinear?). This is what we want when we are + // reducing the image from its native size. + // - Call drawImage() with imageSmoothingEnabled=false. This is easy + // and fast and gives us nearest-neighbor interpolation, which is what + // we want when enlarging the image. However, it's unsupported on many + // browsers (including QtWebkit). + // - Do a manual nearest-neighbor interpolation. This is what we'll fall + // back to when enlarging, and imageSmoothingEnabled isn't supported. + // In theory it's slower, but still pretty fast on my machine, and the + // results look the same AFAICT. + // Is imageSmoothingEnabled supported? If so, we can let canvas do + // nearest-neighbor interpolation for us. + + var smoothingProperty = getCanvasSmoothingProperty(ctx); + + if (smoothingProperty || imgRes.x >= 256 && imgRes.y >= 256) { + // Use built-in scaling + // Turn off anti-aliasing if necessary + if (smoothingProperty) { + ctx[smoothingProperty] = imgRes.x >= 256 && imgRes.y >= 256; + } // Don't necessarily draw with the full-size image; if we're + // downscaling, use the mipmapper to get a pre-downscaled image + // (see comments on Mipmapper class for why this matters). + + + mipmapper.getBySize(extent.x * 256, extent.y * 256, function (mip) { + // It's possible that the image will go off the edge of the canvas-- + // that's OK, the canvas should clip appropriately. + ctx.drawImage(mip, // Convert abs tile coords to rel tile coords, then *256 to convert + // to rel pixel coords + (topLeft.x - tilePoint.x) * 256, (topLeft.y - tilePoint.y) * 256, // Always draw the whole thing and let canvas clip; so we can just + // convert from size in tile coords straight to pixels + extent.x * 256, extent.y * 256); + }); + } else { + // Use manual nearest-neighbor interpolation + // Calculate the source image pixel coordinates that correspond with + // the top-left and bottom-right of this tile. (If the source image + // only partially overlaps the tile, we use max/min to limit the + // sourceStart/End to only reflect the overlapping portion.) + var sourceStart = { + x: Math.max(0, Math.floor((tilePoint.x - topLeft.x) * imgRes.x)), + y: Math.max(0, Math.floor((tilePoint.y - topLeft.y) * imgRes.y)) + }; + var sourceEnd = { + x: Math.min(w, Math.ceil((tilePoint.x + 1 - topLeft.x) * imgRes.x)), + y: Math.min(h, Math.ceil((tilePoint.y + 1 - topLeft.y) * imgRes.y)) + }; // The size, in dest pixels, that each source pixel should occupy. + // This might be greater or less than 1 (e.g. if x and y resolution + // are very different). + + var pixelSize = { + x: 256 / imgRes.x, + y: 256 / imgRes.y + }; // For each pixel in the source image that overlaps the tile... + + for (var row = sourceStart.y; row < sourceEnd.y; row++) { + for (var col = sourceStart.x; col < sourceEnd.x; col++) { + // ...extract the pixel data... + var i = (row * w + col) * 4; + var r = imgData[i]; + var g = imgData[i + 1]; + var b = imgData[i + 2]; + var a = imgData[i + 3]; + ctx.fillStyle = "rgba(" + [r, g, b, a / 255].join(",") + ")"; // ...calculate the corresponding pixel coord in the dest image + // where it should be drawn... + + var pixelPos = { + x: (col / imgRes.x + topLeft.x - tilePoint.x) * 256, + y: (row / imgRes.y + topLeft.y - tilePoint.y) * 256 + }; // ...and draw a rectangle there. + + ctx.fillRect(Math.round(pixelPos.x), Math.round(pixelPos.y), // Looks crazy, but this is necessary to prevent rounding from + // causing overlap between this rect and its neighbors. The + // minuend is the location of the next pixel, while the + // subtrahend is the position of the current pixel (to turn an + // absolute coordinate to a width/height). Yes, I had to look + // up minuend and subtrahend. + Math.round(pixelPos.x + pixelSize.x) - Math.round(pixelPos.x), Math.round(pixelPos.y + pixelSize.y) - Math.round(pixelPos.y)); + } + } + } + } catch (e) { + error = e; + } finally { + done(error, canvas); + } + }); + return canvas; + }; + + this.layerManager.addLayer(canvasTiles, "image", layerId, group); +}; + +methods.removeImage = function (layerId) { + this.layerManager.removeLayer("image", layerId); +}; + +methods.clearImages = function () { + this.layerManager.clearLayers("image"); +}; + +methods.addMeasure = function (options) { + // if a measureControl already exists, then remove it and + // replace with a new one + methods.removeMeasure.call(this); + this.measureControl = _leaflet2["default"].control.measure(options); + this.addControl(this.measureControl); +}; + +methods.removeMeasure = function () { + if (this.measureControl) { + this.removeControl(this.measureControl); + this.measureControl = null; + } +}; + +methods.addSelect = function (ctGroup) { + var _this8 = this; + + methods.removeSelect.call(this); + this._selectButton = _leaflet2["default"].easyButton({ + states: [{ + stateName: "select-inactive", + icon: "ion-qr-scanner", + title: "Make a selection", + onClick: function onClick(btn, map) { + btn.state("select-active"); + _this8._locationFilter = new _leaflet2["default"].LocationFilter2(); + + if (ctGroup) { + var selectionHandle = new global.crosstalk.SelectionHandle(ctGroup); + selectionHandle.on("change", function (e) { + if (e.sender !== selectionHandle) { + if (_this8._locationFilter) { + _this8._locationFilter.disable(); + + btn.state("select-inactive"); + } + } + }); + + var handler = function handler(e) { + _this8.layerManager.brush(_this8._locationFilter.getBounds(), { + sender: selectionHandle + }); + }; + + _this8._locationFilter.on("enabled", handler); + + _this8._locationFilter.on("change", handler); + + _this8._locationFilter.on("disabled", function () { + selectionHandle.close(); + _this8._locationFilter = null; + }); + } + + _this8._locationFilter.addTo(map); + } + }, { + stateName: "select-active", + icon: "ion-close-round", + title: "Dismiss selection", + onClick: function onClick(btn, map) { + btn.state("select-inactive"); + + _this8._locationFilter.disable(); // If explicitly dismissed, clear the crosstalk selections + + + _this8.layerManager.unbrush(); + } + }] + }); + + this._selectButton.addTo(this); +}; + +methods.removeSelect = function () { + if (this._locationFilter) { + this._locationFilter.disable(); + } + + if (this._selectButton) { + this.removeControl(this._selectButton); + this._selectButton = null; + } +}; + +methods.createMapPane = function (name, zIndex) { + this.createPane(name); + this.getPane(name).style.zIndex = zIndex; +}; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./cluster-layer-store":1,"./crs_utils":3,"./dataframe":4,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./mipmapper":16,"./util":17}],16:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// This class simulates a mipmap, which shrinks images by powers of two. This +// stepwise reduction results in "pixel-perfect downscaling" (where every +// pixel of the original image has some contribution to the downscaled image) +// as opposed to a single-step downscaling which will discard a lot of data +// (and with sparse images at small scales can give very surprising results). +var Mipmapper = /*#__PURE__*/function () { + function Mipmapper(img) { + _classCallCheck(this, Mipmapper); + + this._layers = [img]; + } // The various functions on this class take a callback function BUT MAY OR MAY + // NOT actually behave asynchronously. + + + _createClass(Mipmapper, [{ + key: "getBySize", + value: function getBySize(desiredWidth, desiredHeight, callback) { + var _this = this; + + var i = 0; + var lastImg = this._layers[0]; + + var testNext = function testNext() { + _this.getByIndex(i, function (img) { + // If current image is invalid (i.e. too small to be rendered) or + // it's smaller than what we wanted, return the last known good image. + if (!img || img.width < desiredWidth || img.height < desiredHeight) { + callback(lastImg); + return; + } else { + lastImg = img; + i++; + testNext(); + return; + } + }); + }; + + testNext(); + } + }, { + key: "getByIndex", + value: function getByIndex(i, callback) { + var _this2 = this; + + if (this._layers[i]) { + callback(this._layers[i]); + return; + } + + this.getByIndex(i - 1, function (prevImg) { + if (!prevImg) { + // prevImg could not be calculated (too small, possibly) + callback(null); + return; + } + + if (prevImg.width < 2 || prevImg.height < 2) { + // Can't reduce this image any further + callback(null); + return; + } // If reduce ever becomes truly asynchronous, we should stuff a promise or + // something into this._layers[i] before calling this.reduce(), to prevent + // redundant reduce operations from happening. + + + _this2.reduce(prevImg, function (reducedImg) { + _this2._layers[i] = reducedImg; + callback(reducedImg); + return; + }); + }); + } + }, { + key: "reduce", + value: function reduce(img, callback) { + var imgDataCanvas = document.createElement("canvas"); + imgDataCanvas.width = Math.ceil(img.width / 2); + imgDataCanvas.height = Math.ceil(img.height / 2); + imgDataCanvas.style.display = "none"; + document.body.appendChild(imgDataCanvas); + + try { + var imgDataCtx = imgDataCanvas.getContext("2d"); + imgDataCtx.drawImage(img, 0, 0, img.width / 2, img.height / 2); + callback(imgDataCanvas); + } finally { + document.body.removeChild(imgDataCanvas); + } + } + }]); + + return Mipmapper; +}(); + +exports["default"] = Mipmapper; + + +},{}],17:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.log = log; +exports.recycle = recycle; +exports.asArray = asArray; + +function log(message) { + /* eslint-disable no-console */ + if (console && console.log) console.log(message); + /* eslint-enable no-console */ +} + +function recycle(values, length, inPlace) { + if (length === 0 && !inPlace) return []; + + if (!(values instanceof Array)) { + if (inPlace) { + throw new Error("Can't do in-place recycling of a non-Array value"); + } + + values = [values]; + } + + if (typeof length === "undefined") length = values.length; + var dest = inPlace ? values : []; + var origLength = values.length; + + while (dest.length < length) { + dest.push(values[dest.length % origLength]); + } + + if (dest.length > length) { + dest.splice(length, dest.length - length); + } + + return dest; +} + +function asArray(value) { + if (value instanceof Array) return value;else return [value]; +} + + +},{}]},{},[13]); diff --git a/public/site_libs/leaflet-providers-1.9.0/leaflet-providers_1.9.0.js b/public/site_libs/leaflet-providers-1.9.0/leaflet-providers_1.9.0.js new file mode 100644 index 0000000000000000000000000000000000000000..e842c82dcabac73df8a624ad1bd2708a82a9a8b1 --- /dev/null +++ b/public/site_libs/leaflet-providers-1.9.0/leaflet-providers_1.9.0.js @@ -0,0 +1,855 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['leaflet'], factory); + } else if (typeof modules === 'object' && module.exports) { + // define a Common JS module that relies on 'leaflet' + module.exports = factory(require('leaflet')); + } else { + // Assume Leaflet is loaded into global object L already + factory(L); + } +}(this, function (L) { + 'use strict'; + + L.TileLayer.Provider = L.TileLayer.extend({ + initialize: function (arg, options) { + var providers = L.TileLayer.Provider.providers; + + var parts = arg.split('.'); + + var providerName = parts[0]; + var variantName = parts[1]; + + if (!providers[providerName]) { + throw 'No such provider (' + providerName + ')'; + } + + var provider = { + url: providers[providerName].url, + options: providers[providerName].options + }; + + // overwrite values in provider from variant. + if (variantName && 'variants' in providers[providerName]) { + if (!(variantName in providers[providerName].variants)) { + throw 'No such variant of ' + providerName + ' (' + variantName + ')'; + } + var variant = providers[providerName].variants[variantName]; + var variantOptions; + if (typeof variant === 'string') { + variantOptions = { + variant: variant + }; + } else { + variantOptions = variant.options; + } + provider = { + url: variant.url || provider.url, + options: L.Util.extend({}, provider.options, variantOptions) + }; + } + + // replace attribution placeholders with their values from toplevel provider attribution, + // recursively + var attributionReplacer = function (attr) { + if (attr.indexOf('{attribution.') === -1) { + return attr; + } + return attr.replace(/\{attribution.(\w*)\}/g, + function (match, attributionName) { + return attributionReplacer(providers[attributionName].options.attribution); + } + ); + }; + provider.options.attribution = attributionReplacer(provider.options.attribution); + + // Compute final options combining provider options with any user overrides + var layerOpts = L.Util.extend({}, provider.options, options); + L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); + } + }); + + /** + * Definition of providers. + * see http://leafletjs.com/reference.html#tilelayer for options in the options map. + */ + + L.TileLayer.Provider.providers = { + OpenStreetMap: { + url: '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: + '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' + }, + variants: { + Mapnik: {}, + DE: { + url: '//{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + options: { + maxZoom: 18 + } + }, + CH: { + url: '//tile.osm.ch/switzerland/{z}/{x}/{y}.png', + options: { + maxZoom: 18, + bounds: [[45, 5], [48, 11]] + } + }, + France: { + url: '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' + } + }, + HOT: { + url: '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap}, ' + + 'Tiles style by <a href="https://www.hotosm.org/" target="_blank">Humanitarian OpenStreetMap Team</a> ' + + 'hosted by <a href="https://openstreetmap.fr/" target="_blank">OpenStreetMap France</a>' + } + }, + BZH: { + url: '//tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', + options: { + attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://www.openstreetmap.bzh/" target="_blank">Breton OpenStreetMap Team</a>', + bounds: [[46.2, -5.5], [50, 0.7]] + } + } + } + }, + OpenSeaMap: { + url: '//tiles.openseamap.org/seamark/{z}/{x}/{y}.png', + options: { + attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors' + } + }, + OpenPtMap: { + url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: © <a href="http://www.openptmap.org">OpenPtMap</a> contributors' + } + }, + OpenTopoMap: { + url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' + } + }, + OpenRailwayMap: { + url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://www.OpenRailwayMap.org">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' + } + }, + OpenFireMap: { + url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="http://www.openfiremap.org">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' + } + }, + SafeCast: { + url: '//s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', + options: { + maxZoom: 16, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://blog.safecast.org/about/">SafeCast</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' + } + }, + Thunderforest: { + url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', + options: { + attribution: + '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', + variant: 'cycle', + apikey: '<insert your api key here>', + maxZoom: 22 + }, + variants: { + OpenCycleMap: 'cycle', + Transport: { + options: { + variant: 'transport' + } + }, + TransportDark: { + options: { + variant: 'transport-dark' + } + }, + SpinalMap: { + options: { + variant: 'spinal-map' + } + }, + Landscape: 'landscape', + Outdoors: 'outdoors', + Pioneer: 'pioneer', + MobileAtlas: 'mobile-atlas', + Neighbourhood: 'neighbourhood' + } + }, + OpenMapSurfer: { + url: 'https://maps.heigit.org/openmapsurfer/tiles/{variant}/webmercator/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + variant: 'roads', + attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> | Map data ' + }, + variants: { + Roads: { + options: { + variant: 'roads', + attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' + } + }, + Hybrid: { + options: { + variant: 'hybrid', + attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' + } + }, + AdminBounds: { + options: { + variant: 'adminb', + maxZoom: 18, + attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' + } + }, + ContourLines: { + options: { + variant: 'asterc', + maxZoom: 18, + minZoom: 13, + attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>' + } + }, + Hillshade: { + options: { + variant: 'asterh', + maxZoom: 18, + attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>, <a href="http://srtm.csi.cgiar.org/">SRTM</a>' + } + }, + ElementsAtRisk: { + options: { + variant: 'elements_at_risk', + attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' + } + } + } + }, + Hydda: { + url: '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 18, + variant: 'full', + attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}' + }, + variants: { + Full: 'full', + Base: 'base', + RoadsAndLabels: 'roads_and_labels' + } + }, + MapBox: { + url: 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}{r}.png?access_token={accessToken}', + options: { + attribution: + '<a href="https://www.mapbox.com/about/maps/" target="_blank">© Mapbox</a> ' + + '{attribution.OpenStreetMap} ' + + '<a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a>', + subdomains: 'abcd', + id: 'mapbox.streets', + accessToken: '<insert your access token here>', + } + }, + Stamen: { + url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}', + options: { + attribution: + 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + + '<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> — ' + + 'Map data {attribution.OpenStreetMap}', + subdomains: 'abcd', + minZoom: 0, + maxZoom: 20, + variant: 'toner', + ext: 'png' + }, + variants: { + Toner: 'toner', + TonerBackground: 'toner-background', + TonerHybrid: 'toner-hybrid', + TonerLines: 'toner-lines', + TonerLabels: 'toner-labels', + TonerLite: 'toner-lite', + Watercolor: { + url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'watercolor', + ext: 'jpg', + minZoom: 1, + maxZoom: 16 + } + }, + Terrain: { + options: { + variant: 'terrain', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainBackground: { + options: { + variant: 'terrain-background', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainLabels: { + options: { + variant: 'terrain-labels', + minZoom: 0, + maxZoom: 18 + } + }, + TopOSMRelief: { + url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'toposm-color-relief', + ext: 'jpg', + bounds: [[22, -132], [51, -56]] + } + }, + TopOSMFeatures: { + options: { + variant: 'toposm-features', + bounds: [[22, -132], [51, -56]], + opacity: 0.9 + } + } + } + }, + TomTom: { + url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', + options: { + variant: 'basic', + maxZoom: 22, + attribution: + '<a href="https://tomtom.com" target="_blank">© 1992 - ' + new Date().getFullYear() + ' TomTom.</a> ', + subdomains: 'abcd', + style: 'main', + ext: 'png', + apikey: '<insert your API key here>', + }, + variants: { + Basic: 'basic', + Hybrid: 'hybrid', + Labels: 'labels' + } + }, + Esri: { + url: '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', + options: { + variant: 'World_Street_Map', + attribution: 'Tiles © Esri' + }, + variants: { + WorldStreetMap: { + options: { + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' + } + }, + DeLorme: { + options: { + variant: 'Specialty/DeLorme_World_Base_Map', + minZoom: 1, + maxZoom: 11, + attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' + } + }, + WorldTopoMap: { + options: { + variant: 'World_Topo_Map', + attribution: + '{attribution.Esri} — ' + + 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' + } + }, + WorldImagery: { + options: { + variant: 'World_Imagery', + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' + } + }, + WorldTerrain: { + options: { + variant: 'World_Terrain_Base', + maxZoom: 13, + attribution: + '{attribution.Esri} — ' + + 'Source: USGS, Esri, TANA, DeLorme, and NPS' + } + }, + WorldShadedRelief: { + options: { + variant: 'World_Shaded_Relief', + maxZoom: 13, + attribution: '{attribution.Esri} — Source: Esri' + } + }, + WorldPhysical: { + options: { + variant: 'World_Physical_Map', + maxZoom: 8, + attribution: '{attribution.Esri} — Source: US National Park Service' + } + }, + OceanBasemap: { + options: { + variant: 'Ocean_Basemap', + maxZoom: 13, + attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' + } + }, + NatGeoWorldMap: { + options: { + variant: 'NatGeo_World_Map', + maxZoom: 16, + attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' + } + }, + WorldGrayCanvas: { + options: { + variant: 'Canvas/World_Light_Gray_Base', + maxZoom: 16, + attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' + } + } + } + }, + OpenWeatherMap: { + url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', + options: { + maxZoom: 19, + attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>', + apiKey:'<insert your api key here>', + opacity: 0.5 + }, + variants: { + Clouds: 'clouds', + CloudsClassic: 'clouds_cls', + Precipitation: 'precipitation', + PrecipitationClassic: 'precipitation_cls', + Rain: 'rain', + RainClassic: 'rain_cls', + Pressure: 'pressure', + PressureContour: 'pressure_cntr', + Wind: 'wind', + Temperature: 'temp', + Snow: 'snow' + } + }, + HERE: { + /* + * HERE maps, formerly Nokia maps. + * These basemaps are free, but you need an API key. Please sign up at + * https://developer.here.com/plans + */ + url: + 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'app_id={app_id}&app_code={app_code}&lg={language}', + options: { + attribution: + 'Map © 1987-' + new Date().getFullYear() + ' <a href="http://developer.here.com">HERE</a>', + subdomains: '1234', + mapID: 'newest', + 'app_id': '<insert your app_id here>', + 'app_code': '<insert your app_code here>', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalDayTraffic: { + options: { + variant: 'normal.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + normalNightTransit: 'normal.night.transit', + normalNightTransitMobile: 'normal.night.transit.mobile', + reducedDay: 'reduced.day', + reducedNight: 'reduced.night', + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + hybridDayTransit: { + options: { + base: 'aerial', + variant: 'hybrid.day.transit' + } + }, + hybridDayGrey: { + options: { + base: 'aerial', + variant: 'hybrid.grey.day' + } + }, + hybridDayTraffic: { + options: { + variant: 'hybrid.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + FreeMapSK: { + url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', + options: { + minZoom: 8, + maxZoom: 16, + subdomains: '1234', + bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], + attribution: + '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>' + } + }, + MtbMap: { + url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap} & USGS' + } + }, + CartoDB: { + url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png', + options: { + attribution: '{attribution.OpenStreetMap} © <a href="https://carto.com/attributions">CARTO</a>', + subdomains: 'abcd', + maxZoom: 19, + variant: 'light_all' + }, + variants: { + Positron: 'light_all', + PositronNoLabels: 'light_nolabels', + PositronOnlyLabels: 'light_only_labels', + DarkMatter: 'dark_all', + DarkMatterNoLabels: 'dark_nolabels', + DarkMatterOnlyLabels: 'dark_only_labels', + Voyager: 'rastertiles/voyager', + VoyagerNoLabels: 'rastertiles/voyager_nolabels', + VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', + VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' + } + }, + HikeBike: { + url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: '{attribution.OpenStreetMap}', + variant: 'hikebike' + }, + variants: { + HikeBike: {}, + HillShading: { + options: { + maxZoom: 15, + variant: 'hillshading' + } + } + } + }, + BasemapAT: { + url: '//maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', + options: { + maxZoom: 19, + attribution: 'Datenquelle: <a href="https://www.basemap.at">basemap.at</a>', + subdomains: ['', '1', '2', '3', '4'], + format: 'png', + bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], + variant: 'geolandbasemap' + }, + variants: { + basemap: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'geolandbasemap' + } + }, + grau: 'bmapgrau', + overlay: 'bmapoverlay', + highdpi: { + options: { + variant: 'bmaphidpi', + format: 'jpeg' + } + }, + orthofoto: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'bmaporthofoto30cm', + format: 'jpeg' + } + } + } + }, + nlmaps: { + url: '//geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', + options: { + minZoom: 6, + maxZoom: 19, + bounds: [[50.5, 3.25], [54, 7.6]], + attribution: 'Kaartgegevens © <a href="kadaster.nl">Kadaster</a>' + }, + variants: { + 'standaard': 'brtachtergrondkaart', + 'pastel': 'brtachtergrondkaartpastel', + 'grijs': 'brtachtergrondkaartgrijs', + 'luchtfoto': { + 'url': '//geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/1.0.0/2016_ortho25/EPSG:3857/{z}/{x}/{y}.png', + } + } + }, + NASAGIBS: { + url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', + options: { + attribution: + 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + + '(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.', + bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], + minZoom: 1, + maxZoom: 9, + format: 'jpg', + time: '', + tilematrixset: 'GoogleMapsCompatible_Level' + }, + variants: { + ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', + ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', + ViirsEarthAtNight2012: { + options: { + variant: 'VIIRS_CityLights_2012', + maxZoom: 8 + } + }, + ModisTerraLSTDay: { + options: { + variant: 'MODIS_Terra_Land_Surface_Temp_Day', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + }, + ModisTerraSnowCover: { + options: { + variant: 'MODIS_Terra_Snow_Cover', + format: 'png', + maxZoom: 8, + opacity: 0.75 + } + }, + ModisTerraAOD: { + options: { + variant: 'MODIS_Terra_Aerosol', + format: 'png', + maxZoom: 6, + opacity: 0.75 + } + }, + ModisTerraChlorophyll: { + options: { + variant: 'MODIS_Terra_Chlorophyll_A', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + } + } + }, + NLS: { + // NLS maps are copyright National library of Scotland. + // http://maps.nls.uk/projects/api/index.html + // Please contact NLS for anything other than non-commercial low volume usage + // + // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s + // z0-9 - 1:1m + // z10-11 - quarter inch (1:253440) + // z12-18 - one inch (1:63360) + url: '//nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', + options: { + attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>', + bounds: [[49.6, -12], [61.7, 3]], + minZoom: 1, + maxZoom: 18, + subdomains: '0123', + } + }, + JusticeMap: { + // Justice Map (http://www.justicemap.org/) + // Visualize race and income data for your community, county and country. + // Includes tools for data journalists, bloggers and community activists. + url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', + options: { + attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>', + // one of 'county', 'tract', 'block' + size: 'county', + // Bounds for USA, including Alaska and Hawaii + bounds: [[14, -180], [72, -56]] + }, + variants: { + income: 'income', + americanIndian: 'indian', + asian: 'asian', + black: 'black', + hispanic: 'hispanic', + multi: 'multi', + nonWhite: 'nonwhite', + white: 'white', + plurality: 'plural' + } + }, + Wikimedia: { + url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', + options: { + attribution: '<a href="https://wikimediafoundation.org/wiki/Maps_Terms_of_Use">Wikimedia</a>', + minZoom: 1, + maxZoom: 19 + } + }, + GeoportailFrance: { + url: 'https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', + options: { + attribution: '<a target="_blank" href="https://www.geoportail.gouv.fr/">Geoportail France</a>', + bounds: [[-75, -180], [81, 180]], + minZoom: 2, + maxZoom: 18, + // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ + // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee + apikey: 'choisirgeoportail', + format: 'image/jpeg', + style : 'normal', + variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' + }, + variants: { + parcels: { + options : { + variant: 'CADASTRALPARCELS.PARCELS', + maxZoom: 20, + style : 'bdparcellaire', + format: 'image/png' + } + }, + ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', + maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', + orthos: { + options: { + maxZoom: 19, + variant: 'ORTHOIMAGERY.ORTHOPHOTOS' + } + } + } + }, + OneMapSG: { + url: '//maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', + options: { + variant: 'Default', + minZoom: 11, + maxZoom: 18, + bounds: [[1.56073, 104.11475], [1.16, 103.502]], + attribution: '<img src="https://docs.onemap.sg/maps/images/oneMap64-01.png" style="height:20px;width:20px;"/> New OneMap | Map data © contributors, <a href="http://SLA.gov.sg">Singapore Land Authority</a>' + }, + variants: { + Default: 'Default', + Night: 'Night', + Original: 'Original', + Grey: 'Grey', + LandLot: 'LandLot' + } + } + }; + + L.tileLayer.provider = function (provider, options) { + return new L.TileLayer.Provider(provider, options); + }; + + return L; +})); diff --git a/public/site_libs/leaflet-providers-plugin-2.1.1/leaflet-providers-plugin.js b/public/site_libs/leaflet-providers-plugin-2.1.1/leaflet-providers-plugin.js new file mode 100644 index 0000000000000000000000000000000000000000..82cd63014ecc83da057b962edf007a884875c0f5 --- /dev/null +++ b/public/site_libs/leaflet-providers-plugin-2.1.1/leaflet-providers-plugin.js @@ -0,0 +1,3 @@ +LeafletWidget.methods.addProviderTiles = function(provider, layerId, group, options) { + this.layerManager.addLayer(L.tileLayer.provider(provider, options), "tile", layerId, group); +}; diff --git a/public/site_libs/leafletfix-1.0.0/leafletfix.css b/public/site_libs/leafletfix-1.0.0/leafletfix.css new file mode 100644 index 0000000000000000000000000000000000000000..3ae60ffa22772fe5725111811f5bc72a555b42f9 --- /dev/null +++ b/public/site_libs/leafletfix-1.0.0/leafletfix.css @@ -0,0 +1,36 @@ +/* Work around CSS properties introduced on img by bootstrap */ +img.leaflet-tile { + padding: 0; + margin: 0; + border-radius: 0; + border: none; +} +.info { + padding: 6px 8px; + font: 14px/16px Arial, Helvetica, sans-serif; + background: white; + background: rgba(255,255,255,0.8); + box-shadow: 0 0 15px rgba(0,0,0,0.2); + border-radius: 5px; +} +.legend { + line-height: 18px; + color: #555; +} +.legend svg text { + fill: #555; +} +.legend svg line { + stroke: #555; +} +.legend i { + width: 18px; + height: 18px; + margin-right: 4px; + opacity: 0.7; + display: inline-block; + vertical-align: top; + /*For IE 7*/ + zoom: 1; + *display: inline; +} diff --git a/public/site_libs/mapviewCSS-0.0.1/mapview-popup.css b/public/site_libs/mapviewCSS-0.0.1/mapview-popup.css new file mode 100644 index 0000000000000000000000000000000000000000..ead6a8ed20956fd216ce194bbbc3a20626ad8bf7 --- /dev/null +++ b/public/site_libs/mapviewCSS-0.0.1/mapview-popup.css @@ -0,0 +1,102 @@ +/* table class css */ +table.mapview-popup { + overflow: scroll; + width: auto; + height: auto; + border-collapse: collapse; +} + +/* +table.mapview-popup tr:first-child td { + background: #A8E6A8; +} +*/ + +table.mapview-popup tr:nth-child(even) { + background: #D1E0FF; +} + +table.mapview-popup tr:nth-child(odd) { + background: #ebf1ff; +} + +table.mapview-popup, th, td { + border-bottom: 1px solid #ffffff; +} + +/* +table.tab tr:hover { + background: #00ffff; +} +*/ + + +/* general leaflet popup css '*/ +.leaflet-popup-content { + margin: 1px 1px 1px 1px; + line-height: 1.5; + overflow-y: auto; + overflow-x: scoll; +} + +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: -20px; + padding: 3px 0 0 0; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + font-weight: bold; + color: #c3c3c3; + text-decoration: none; + background: transparent; +} + +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; +} + +.leaflet-popup-content-wrapper, .leaflet-popup-tip { + padding: 1px; + -webkit-border-radius: 0; + border-radius: 0; + background: #ffffff; /*#4c4c4c;*/ + box-shadow: 0 3px 14px rgba(0,0,0,0.4); +} + + +div::-webkit-scrollbar { + width: 5px; + height: 5px; +} +div::-webkit-scrollbar-button { + width: 0; + height: 0; +} +div::-webkit-scrollbar-thumb { + background: #666666; + border: 0 none #ffffff; + border-radius: 0; +} +div::-webkit-scrollbar-thumb:hover { + background: #333333; +} +div::-webkit-scrollbar-thumb:active { + background: #333333; +} +div::-webkit-scrollbar-track { + background: #e1e1e1; + border: 0 none #ffffff; + border-radius: 50px; +} +div::-webkit-scrollbar-track:hover { + background: #e1e1e1; +} +div::-webkit-scrollbar-track:active { + background: #e1e1e1; +} +div::-webkit-scrollbar-corner { + background: transparent; +} diff --git a/public/site_libs/mapviewCSS-0.0.1/mapview.css b/public/site_libs/mapviewCSS-0.0.1/mapview.css new file mode 100644 index 0000000000000000000000000000000000000000..ac087917f4742aebb47cca3814965c27482c3388 --- /dev/null +++ b/public/site_libs/mapviewCSS-0.0.1/mapview.css @@ -0,0 +1 @@ +.leaflet-control br {clear: both;} diff --git a/public/site_libs/proj4-2.6.2/proj4.min.js b/public/site_libs/proj4-2.6.2/proj4.min.js new file mode 100644 index 0000000000000000000000000000000000000000..99865a521987c8615aafdca43112b5ea2aa0a21f --- /dev/null +++ b/public/site_libs/proj4-2.6.2/proj4.min.js @@ -0,0 +1 @@ +!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):t.proj4=s()}(this,function(){"use strict";function k(t,s){if(t[s])return t[s];for(var i,a=Object.keys(t),h=s.toLowerCase().replace(H,""),e=-1;++e<a.length;)if((i=a[e]).toLowerCase().replace(H,"")===h)return t[i]}function e(t){if("string"!=typeof t)throw new Error("not a string");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=K}function h(t,s,i){Array.isArray(s)&&(i.unshift(s),s=null);var a=s?{}:t,h=i.reduce(function(t,s){return n(s,t),t},a);s&&(t[s]=h)}function n(t,s){if(Array.isArray(t)){var i,a=t.shift();if("PARAMETER"===a&&(a=t.shift()),1===t.length)return Array.isArray(t[0])?(s[a]={},void n(t[0],s[a])):void(s[a]=t[0]);if(t.length)if("TOWGS84"!==a){if("AXIS"===a)return a in s||(s[a]=[]),void s[a].push(t);switch(Array.isArray(a)||(s[a]={}),a){case"UNIT":case"PRIMEM":case"VERT_DATUM":return s[a]={name:t[0].toLowerCase(),convert:t[1]},void(3===t.length&&n(t[2],s[a]));case"SPHEROID":case"ELLIPSOID":return s[a]={name:t[0],a:t[1],rf:t[2]},void(4===t.length&&n(t[3],s[a]));case"PROJECTEDCRS":case"PROJCRS":case"GEOGCS":case"GEOCCS":case"PROJCS":case"LOCAL_CS":case"GEODCRS":case"GEODETICCRS":case"GEODETICDATUM":case"EDATUM":case"ENGINEERINGDATUM":case"VERT_CS":case"VERTCRS":case"VERTICALCRS":case"COMPD_CS":case"COMPOUNDCRS":case"ENGINEERINGCRS":case"ENGCRS":case"FITTED_CS":case"LOCAL_DATUM":case"DATUM":return t[0]=["name",t[0]],void h(s,a,t);default:for(i=-1;++i<t.length;)if(!Array.isArray(t[i]))return n(t,s[a]);return h(s,a,t)}}else s[a]=t;else s[a]=!0}else s[t]=!0}function r(t){return t*it}function o(e){function t(t){return t*(e.to_meter||1)}if("GEOGCS"===e.type?e.projName="longlat":"LOCAL_CS"===e.type?(e.projName="identity",e.local=!0):"object"==typeof e.PROJECTION?e.projName=Object.keys(e.PROJECTION)[0]:e.projName=e.PROJECTION,e.AXIS){for(var s="",i=0,a=e.AXIS.length;i<a;++i){var h=e.AXIS[i][0].toLowerCase();-1!==h.indexOf("north")?s+="n":-1!==h.indexOf("south")?s+="s":-1!==h.indexOf("east")?s+="e":-1!==h.indexOf("west")&&(s+="w")}2===s.length&&(s+="u"),3===s.length&&(e.axis=s)}e.UNIT&&(e.units=e.UNIT.name.toLowerCase(),"metre"===e.units&&(e.units="meter"),e.UNIT.convert&&("GEOGCS"===e.type?e.DATUM&&e.DATUM.SPHEROID&&(e.to_meter=e.UNIT.convert*e.DATUM.SPHEROID.a):e.to_meter=e.UNIT.convert));var n=e.GEOGCS;"GEOGCS"===e.type&&(n=e),n&&(n.DATUM?e.datumCode=n.DATUM.name.toLowerCase():e.datumCode=n.name.toLowerCase(),"d_"===e.datumCode.slice(0,2)&&(e.datumCode=e.datumCode.slice(2)),"new_zealand_geodetic_datum_1949"!==e.datumCode&&"new_zealand_1949"!==e.datumCode||(e.datumCode="nzgd49"),"wgs_1984"!==e.datumCode&&"world_geodetic_system_1984"!==e.datumCode||("Mercator_Auxiliary_Sphere"===e.PROJECTION&&(e.sphere=!0),e.datumCode="wgs84"),"_ferro"===e.datumCode.slice(-6)&&(e.datumCode=e.datumCode.slice(0,-6)),"_jakarta"===e.datumCode.slice(-8)&&(e.datumCode=e.datumCode.slice(0,-8)),~e.datumCode.indexOf("belge")&&(e.datumCode="rnb72"),n.DATUM&&n.DATUM.SPHEROID&&(e.ellps=n.DATUM.SPHEROID.name.replace("_19","").replace(/[Cc]larke\_18/,"clrk"),"international"===e.ellps.toLowerCase().slice(0,13)&&(e.ellps="intl"),e.a=n.DATUM.SPHEROID.a,e.rf=parseFloat(n.DATUM.SPHEROID.rf,10)),n.DATUM&&n.DATUM.TOWGS84&&(e.datum_params=n.DATUM.TOWGS84),~e.datumCode.indexOf("osgb_1936")&&(e.datumCode="osgb36"),~e.datumCode.indexOf("osni_1952")&&(e.datumCode="osni52"),(~e.datumCode.indexOf("tm65")||~e.datumCode.indexOf("geodetic_datum_of_1965"))&&(e.datumCode="ire65"),"ch1903+"===e.datumCode&&(e.datumCode="ch1903"),~e.datumCode.indexOf("israel")&&(e.datumCode="isr93")),e.b&&!isFinite(e.b)&&(e.b=e.a),[["standard_parallel_1","Standard_Parallel_1"],["standard_parallel_2","Standard_Parallel_2"],["false_easting","False_Easting"],["false_northing","False_Northing"],["central_meridian","Central_Meridian"],["latitude_of_origin","Latitude_Of_Origin"],["latitude_of_origin","Central_Parallel"],["scale_factor","Scale_Factor"],["k0","scale_factor"],["latitude_of_center","Latitude_Of_Center"],["latitude_of_center","Latitude_of_center"],["lat0","latitude_of_center",r],["longitude_of_center","Longitude_Of_Center"],["longitude_of_center","Longitude_of_center"],["longc","longitude_of_center",r],["x0","false_easting",t],["y0","false_northing",t],["long0","central_meridian",r],["lat0","latitude_of_origin",r],["lat0","standard_parallel_1",r],["lat1","standard_parallel_1",r],["lat2","standard_parallel_2",r],["azimuth","Azimuth"],["alpha","azimuth",r],["srsCode","name"]].forEach(function(t){return s=e,a=(i=t)[0],h=i[1],void(!(a in s)&&h in s&&(s[a]=s[h],3===i.length&&(s[a]=i[2](s[a]))));var s,i,a,h}),e.long0||!e.longc||"Albers_Conic_Equal_Area"!==e.projName&&"Lambert_Azimuthal_Equal_Area"!==e.projName||(e.long0=e.longc),e.lat_ts||!e.lat1||"Stereographic_South_Pole"!==e.projName&&"Polar Stereographic (variant B)"!==e.projName||(e.lat0=r(0<e.lat1?90:-90),e.lat_ts=e.lat1)}function l(t){var s=this;if(2===arguments.length){var i=arguments[1];"string"==typeof i?"+"===i.charAt(0)?l[t]=J(arguments[1]):l[t]=at(arguments[1]):l[t]=i}else if(1===arguments.length){if(Array.isArray(t))return t.map(function(t){Array.isArray(t)?l.apply(s,t):l(t)});if("string"==typeof t){if(t in l)return l[t]}else"EPSG"in t?l["EPSG:"+t.EPSG]=t:"ESRI"in t?l["ESRI:"+t.ESRI]=t:"IAU2000"in t?l["IAU2000:"+t.IAU2000]=t:console.log(t);return}}function E(t){if("string"!=typeof t)return t;if(t in l)return l[t];if(a=t,lt.some(function(t){return-1<a.indexOf(t)})){var s=at(t);if(function(t){var s=k(t,"authority");if(s){var i=k(s,"epsg");return i&&-1<Mt.indexOf(i)}}(s))return l["EPSG:3857"];var i=function(t){var s=k(t,"extension");if(s)return k(s,"proj4")}(s);return i?J(i):s}var a;return"+"===t[0]?J(t):void 0}function t(t){return t}function s(t,s){var i=mt.length;return t.names?((mt[i]=t).names.forEach(function(t){ft[t.toLowerCase()]=i}),this):(console.log(s),!0)}function q(t,s){if(!(this instanceof q))return new q(t);s=s||function(t){if(t)throw t};var i,a,h,e,n,r,o,l,M,c,u,f,m,p,d,y,_,x,g,b,v,w,C,P,S,N=E(t);"object"==typeof N&&(i=q.projections.get(N.projName))?(!N.datumCode||"none"===N.datumCode||(a=k(_t,N.datumCode))&&(N.datum_params=a.towgs84?a.towgs84.split(","):null,N.ellps=a.ellipse,N.datumName=a.datumName?a.datumName:N.datumCode),N.k0=N.k0||1,N.axis=N.axis||"enu",N.ellps=N.ellps||"wgs84",b=N.a,v=N.b,w=N.rf,C=N.ellps,P=N.sphere,b||(b=(S=(S=k(dt,C))||yt).a,v=S.b,w=S.rf),w&&!v&&(v=(1-1/w)*b),(0===w||Math.abs(b-v)<D)&&(P=!0,v=b),m=(h={a:b,b:v,rf:w,sphere:P}).a,p=h.b,d=N.R_A,x=((y=m*m)-(_=p*p))/y,g=0,d?(y=(m*=1-x*(R+x*(L+x*T)))*m,x=0):g=Math.sqrt(x),e={es:x,e:g,ep2:(y-_)/_},n=N.datum||(r=N.datumCode,o=N.datum_params,l=h.a,M=h.b,c=e.es,u=e.ep2,(f={}).datum_type=void 0===r||"none"===r?G:A,o&&(f.datum_params=o.map(parseFloat),0===f.datum_params[0]&&0===f.datum_params[1]&&0===f.datum_params[2]||(f.datum_type=I),3<f.datum_params.length&&(0===f.datum_params[3]&&0===f.datum_params[4]&&0===f.datum_params[5]&&0===f.datum_params[6]||(f.datum_type=O,f.datum_params[3]*=j,f.datum_params[4]*=j,f.datum_params[5]*=j,f.datum_params[6]=f.datum_params[6]/1e6+1))),f.a=l,f.b=M,f.es=c,f.ep2=u,f),ct(this,N),ct(this,i),this.a=h.a,this.b=h.b,this.rf=h.rf,this.sphere=h.sphere,this.es=e.es,this.e=e.e,this.ep2=e.ep2,this.datum=n,this.init(),s(null,this)):s(t)}function M(t,s,i){var a,h,e,n,r=t.x,o=t.y,l=t.z?t.z:0;if(o<-z&&-1.001*z<o)o=-z;else if(z<o&&o<1.001*z)o=z;else{if(o<-z)return{x:-1/0,y:-1/0,z:t.z};if(z<o)return{x:1/0,y:1/0,z:t.z}}return r>Math.PI&&(r-=2*Math.PI),h=Math.sin(o),n=Math.cos(o),e=h*h,{x:((a=i/Math.sqrt(1-s*e))+l)*n*Math.cos(r),y:(a+l)*n*Math.sin(r),z:(a*(1-s)+l)*h}}function c(t,s,i,a){var h,e,n,r,o,l,M,c,u,f,m,p,d,y=t.x,_=t.y,x=t.z?t.z:0,g=Math.sqrt(y*y+_*_),b=Math.sqrt(y*y+_*_+x*x);if(g/i<1e-12){if(p=0,b/i<1e-12)return d=-a,{x:t.x,y:t.y,z:t.z}}else p=Math.atan2(_,y);for(h=x/b,l=(e=g/b)*(1-s)*(n=1/Math.sqrt(1-s*(2-s)*e*e)),M=h*n,m=0;m++,r=s*(o=i/Math.sqrt(1-s*M*M))/(o+(d=g*l+x*M-o*(1-s*M*M))),f=(u=h*(n=1/Math.sqrt(1-r*(2-r)*e*e)))*l-(c=e*(1-r)*n)*M,l=c,M=u,1e-24<f*f&&m<30;);return{x:p,y:Math.atan(u/Math.abs(c)),z:d}}function u(t){return t===I||t===O}function i(t){if("function"==typeof Number.isFinite){if(Number.isFinite(t))return;throw new TypeError("coordinates must be finite numbers")}if("number"!=typeof t||t!=t||!isFinite(t))throw new TypeError("coordinates must be finite numbers")}function f(t,s,i){var a,h,e;if(Array.isArray(i)&&(i=bt(i)),vt(i),t.datum&&s.datum&&(e=s,((h=t).datum.datum_type===I||h.datum.datum_type===O)&&"WGS84"!==e.datumCode||(e.datum.datum_type===I||e.datum.datum_type===O)&&"WGS84"!==h.datumCode)&&(i=f(t,a=new q("WGS84"),i),t=a),"enu"!==t.axis&&(i=gt(t,!1,i)),"longlat"===t.projName)i={x:i.x*N,y:i.y*N,z:i.z||0};else if(t.to_meter&&(i={x:i.x*t.to_meter,y:i.y*t.to_meter,z:i.z||0}),!(i=t.inverse(i)))return;return t.from_greenwich&&(i.x+=t.from_greenwich),i=xt(t.datum,s.datum,i),s.from_greenwich&&(i={x:i.x-s.from_greenwich,y:i.y,z:i.z||0}),"longlat"===s.projName?i={x:i.x*B,y:i.y*B,z:i.z||0}:(i=s.forward(i),s.to_meter&&(i={x:i.x/s.to_meter,y:i.y/s.to_meter,z:i.z||0})),"enu"!==s.axis?gt(s,!0,i):i}function m(s,i,a){var t,h,e;return Array.isArray(a)?(t=f(s,i,a)||{x:NaN,y:NaN},2<a.length?void 0!==s.name&&"geocent"===s.name||void 0!==i.name&&"geocent"===i.name?"number"==typeof t.z?[t.x,t.y,t.z].concat(a.splice(3)):[t.x,t.y,a[2]].concat(a.splice(3)):[t.x,t.y].concat(a.splice(2)):[t.x,t.y]):(h=f(s,i,a),2===(e=Object.keys(a)).length||e.forEach(function(t){if(void 0!==s.name&&"geocent"===s.name||void 0!==i.name&&"geocent"===i.name){if("x"===t||"y"===t||"z"===t)return}else if("x"===t||"y"===t)return;h[t]=a[t]}),h)}function p(t){return t instanceof q?t:t.oProj?t.oProj:q(t)}function a(s,i,t){s=p(s);var a,h=!1;return void 0===i?(i=s,s=wt,h=!0):void 0===i.x&&!Array.isArray(i)||(t=i,i=s,s=wt,h=!0),i=p(i),t?m(s,i,t):(a={forward:function(t){return m(s,i,t)},inverse:function(t){return m(i,s,t)}},h&&(a.oProj=i),a)}function d(t,s){return s=s||5,i=function(t){var s,i,a,h,e,n,r=t.lat,o=t.lon,l=_(r),M=_(o);n=Math.floor((o+180)/6)+1,180===o&&(n=60),56<=r&&r<64&&3<=o&&o<12&&(n=32),72<=r&&r<84&&(0<=o&&o<9?n=31:9<=o&&o<21?n=33:21<=o&&o<33?n=35:33<=o&&o<42&&(n=37)),e=_(6*(n-1)-180+3),s=6378137/Math.sqrt(1-.00669438*Math.sin(l)*Math.sin(l)),i=Math.tan(l)*Math.tan(l),a=.006739496752268451*Math.cos(l)*Math.cos(l);var c=.9996*s*((h=Math.cos(l)*(M-e))+(1-i+a)*h*h*h/6+(5-18*i+i*i+72*a-.39089081163157013)*h*h*h*h*h/120)+5e5,u=.9996*(6378137*(.9983242984503243*l-.002514607064228144*Math.sin(2*l)+2639046602129982e-21*Math.sin(4*l)-3.418046101696858e-9*Math.sin(6*l))+s*Math.tan(l)*(h*h/2+(5-i+9*a+4*a*a)*h*h*h*h/24+(61-58*i+i*i+600*a-2.2240339282485886)*h*h*h*h*h*h/720));return r<0&&(u+=1e7),{northing:Math.round(u),easting:Math.round(c),zoneNumber:n,zoneLetter:function(t){var s="Z";return t<=84&&72<=t?s="X":t<72&&64<=t?s="W":t<64&&56<=t?s="V":t<56&&48<=t?s="U":t<48&&40<=t?s="T":t<40&&32<=t?s="S":t<32&&24<=t?s="R":t<24&&16<=t?s="Q":t<16&&8<=t?s="P":t<8&&0<=t?s="N":t<0&&-8<=t?s="M":t<-8&&-16<=t?s="L":t<-16&&-24<=t?s="K":t<-24&&-32<=t?s="J":t<-32&&-40<=t?s="H":t<-40&&-48<=t?s="G":t<-48&&-56<=t?s="F":t<-56&&-64<=t?s="E":t<-64&&-72<=t?s="D":t<-72&&-80<=t&&(s="C"),s}(r)}}({lat:t[1],lon:t[0]}),a=s,h="00000"+i.easting,e="00000"+i.northing,i.zoneNumber+i.zoneLetter+function(t,s,i){var a=b(i);return function(t,s,i){var a=i-1,h=Pt.charCodeAt(a),e=St.charCodeAt(a),n=h+t-1,r=e+s,o=!1;return It<n&&(n=n-It+Nt-1,o=!0),(n===kt||h<kt&&kt<n||(kt<n||h<kt)&&o)&&n++,(n===Et||h<Et&&Et<n||(Et<n||h<Et)&&o)&&++n===kt&&n++,It<n&&(n=n-It+Nt-1),o=qt<r&&(r=r-qt+Nt-1,!0),(r===kt||e<kt&&kt<r||(kt<r||e<kt)&&o)&&r++,(r===Et||e<Et&&Et<r||(Et<r||e<Et)&&o)&&++r===kt&&r++,qt<r&&(r=r-qt+Nt-1),String.fromCharCode(n)+String.fromCharCode(r)}(Math.floor(t/1e5),Math.floor(s/1e5)%20,a)}(i.easting,i.northing,i.zoneNumber)+h.substr(h.length-5,a)+e.substr(e.length-5,a);var i,a,h,e}function y(t){var s=g(v(t.toUpperCase()));return s.lat&&s.lon?[s.lon,s.lat]:[(s.left+s.right)/2,(s.top+s.bottom)/2]}function _(t){return t*(Math.PI/180)}function x(t){return t/Math.PI*180}function g(t){var s=t.northing,i=t.easting,a=t.zoneLetter,h=t.zoneNumber;if(h<0||60<h)return null;var e,n,r,o,l,M,c,u,f=(1-Math.sqrt(.99330562))/(1+Math.sqrt(.99330562)),m=i-5e5,p=s;a<"N"&&(p-=1e7),M=6*(h-1)-180+3,u=(c=p/.9996/6367449.145945056)+(3*f/2-27*f*f*f/32)*Math.sin(2*c)+(21*f*f/16-55*f*f*f*f/32)*Math.sin(4*c)+151*f*f*f/96*Math.sin(6*c),e=6378137/Math.sqrt(1-.00669438*Math.sin(u)*Math.sin(u)),n=Math.tan(u)*Math.tan(u),r=.006739496752268451*Math.cos(u)*Math.cos(u),o=6335439.32722994/Math.pow(1-.00669438*Math.sin(u)*Math.sin(u),1.5),l=m/(.9996*e);var d,y=x(y=u-e*Math.tan(u)/o*(l*l/2-(5+3*n+10*r-4*r*r-.06065547077041606)*l*l*l*l/24+(61+90*n+298*r+45*n*n-1.6983531815716497-3*r*r)*l*l*l*l*l*l/720)),_=M+x(_=(l-(1+2*n+r)*l*l*l/6+(5-2*r+28*n-3*r*r+.05391597401814761+24*n*n)*l*l*l*l*l/120)/Math.cos(u));return t.accuracy?{top:(d=g({northing:t.northing+t.accuracy,easting:t.easting+t.accuracy,zoneLetter:t.zoneLetter,zoneNumber:t.zoneNumber})).lat,right:d.lon,bottom:y,left:_}:{lat:y,lon:_}}function b(t){var s=t%Ct;return 0===s&&(s=Ct),s}function v(t){if(t&&0===t.length)throw"MGRSPoint coverting from nothing";for(var s,i=t.length,a=null,h="",e=0;!/[A-Z]/.test(s=t.charAt(e));){if(2<=e)throw"MGRSPoint bad conversion from: "+t;h+=s,e++}var n=parseInt(h,10);if(0===e||i<e+3)throw"MGRSPoint bad conversion from: "+t;var r=t.charAt(e++);if(r<="A"||"B"===r||"Y"===r||"Z"<=r||"I"===r||"O"===r)throw"MGRSPoint zone letter "+r+" not handled: "+t;a=t.substring(e,e+=2);for(var o=b(n),l=function(t,s){for(var i=Pt.charCodeAt(s-1),a=1e5,h=!1;i!==t.charCodeAt(0);){if(++i===kt&&i++,i===Et&&i++,It<i){if(h)throw"Bad character: "+t;i=Nt,h=!0}a+=1e5}return a}(a.charAt(0),o),M=function(t,s){if("V"<t)throw"MGRSPoint given invalid Northing "+t;for(var i=St.charCodeAt(s-1),a=0,h=!1;i!==t.charCodeAt(0);){if(++i===kt&&i++,i===Et&&i++,qt<i){if(h)throw"Bad character: "+t;i=Nt,h=!0}a+=1e5}return a}(a.charAt(1),o);M<w(r);)M+=2e6;var c=i-e;if(c%2!=0)throw"MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters"+t;var u,f,m,p=c/2,d=0,y=0;return 0<p&&(u=1e5/Math.pow(10,p),f=t.substring(e,e+p),d=parseFloat(f)*u,m=t.substring(e+p),y=parseFloat(m)*u),{easting:d+l,northing:y+M,zoneLetter:r,zoneNumber:n,accuracy:u}}function w(t){var s;switch(t){case"C":s=11e5;break;case"D":s=2e6;break;case"E":s=28e5;break;case"F":s=37e5;break;case"G":s=46e5;break;case"H":s=55e5;break;case"J":s=64e5;break;case"K":s=73e5;break;case"L":s=82e5;break;case"M":s=91e5;break;case"N":s=0;break;case"P":s=8e5;break;case"Q":s=17e5;break;case"R":s=26e5;break;case"S":s=35e5;break;case"T":s=44e5;break;case"U":s=53e5;break;case"V":s=62e5;break;case"W":s=7e6;break;case"X":s=79e5;break;default:s=-1}if(0<=s)return s;throw"Invalid zone letter: "+t}function C(t,s,i){if(!(this instanceof C))return new C(t,s,i);var a;Array.isArray(t)?(this.x=t[0],this.y=t[1],this.z=t[2]||0):"object"==typeof t?(this.x=t.x,this.y=t.y,this.z=t.z||0):"string"==typeof t&&void 0===s?(a=t.split(","),this.x=parseFloat(a[0],10),this.y=parseFloat(a[1],10),this.z=parseFloat(a[2],10)||0):(this.x=t,this.y=s,this.z=i||0),console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")}function P(t,s,i,a){var h;return t<D?(a.value=Os,h=0):(h=Math.atan2(s,i),Math.abs(h)<=U?a.value=Os:U<h&&h<=z+U?(a.value=As,h-=z):z+U<h||h<=-(z+U)?(a.value=Gs,h=0<=h?h-Q:h+Q):(a.value=js,h+=z)),h}function S(t,s){var i=t+s;return i<-Q?i+=F:+Q<i&&(i-=F),i}var I=1,O=2,A=4,G=5,j=484813681109536e-20,z=Math.PI/2,R=.16666666666666666,L=.04722222222222222,T=.022156084656084655,D=1e-10,N=.017453292519943295,B=57.29577951308232,U=Math.PI/4,F=2*Math.PI,Q=3.14159265359,W={greenwich:0,lisbon:-9.131906111111,paris:2.337229166667,bogota:-74.080916666667,madrid:-3.687938888889,rome:12.452333333333,bern:7.439583333333,jakarta:106.807719444444,ferro:-17.666666666667,brussels:4.367975,stockholm:18.058277777778,athens:23.7163375,oslo:10.722916666667},X={ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937}},H=/[\s_\-\/\(\)]/g,J=function(t){var s,i,a,h={},e=t.split("+").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,s){var i=s.split("=");return i.push(!0),t[i[0].toLowerCase()]=i[1],t},{}),n={proj:"projName",datum:"datumCode",rf:function(t){h.rf=parseFloat(t)},lat_0:function(t){h.lat0=t*N},lat_1:function(t){h.lat1=t*N},lat_2:function(t){h.lat2=t*N},lat_ts:function(t){h.lat_ts=t*N},lon_0:function(t){h.long0=t*N},lon_1:function(t){h.long1=t*N},lon_2:function(t){h.long2=t*N},alpha:function(t){h.alpha=parseFloat(t)*N},lonc:function(t){h.longc=t*N},x_0:function(t){h.x0=parseFloat(t)},y_0:function(t){h.y0=parseFloat(t)},k_0:function(t){h.k0=parseFloat(t)},k:function(t){h.k0=parseFloat(t)},a:function(t){h.a=parseFloat(t)},b:function(t){h.b=parseFloat(t)},r_a:function(){h.R_A=!0},zone:function(t){h.zone=parseInt(t,10)},south:function(){h.utmSouth=!0},towgs84:function(t){h.datum_params=t.split(",").map(function(t){return parseFloat(t)})},to_meter:function(t){h.to_meter=parseFloat(t)},units:function(t){h.units=t;var s=k(X,t);s&&(h.to_meter=s.to_meter)},from_greenwich:function(t){h.from_greenwich=t*N},pm:function(t){var s=k(W,t);h.from_greenwich=(s||parseFloat(t))*N},nadgrids:function(t){"@null"===t?h.datumCode="none":h.nadgrids=t},axis:function(t){3===t.length&&-1!=="ewnsud".indexOf(t.substr(0,1))&&-1!=="ewnsud".indexOf(t.substr(1,1))&&-1!=="ewnsud".indexOf(t.substr(2,1))&&(h.axis=t)}};for(s in e)i=e[s],s in n?"function"==typeof(a=n[s])?a(i):h[a]=i:h[s]=i;return"string"==typeof h.datumCode&&"WGS84"!==h.datumCode&&(h.datumCode=h.datumCode.toLowerCase()),h},K=1,V=/\s/,Z=/[A-Za-z]/,Y=/[A-Za-z84]/,$=/[,\]]/,tt=/[\d\.E\-\+]/;e.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;V.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case K:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},e.prototype.afterquote=function(t){if('"'===t)return this.word+='"',void(this.state=4);if($.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in afterquote yet, index '+this.place)},e.prototype.afterItem=function(t){return","===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=K)):"]"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=K,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},e.prototype.number=function(t){if(!tt.test(t)){if($.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in number yet, index '+this.place)}this.word+=t},e.prototype.quoted=function(t){'"'!==t?this.word+=t:this.state=5},e.prototype.keyword=function(t){if(Y.test(t))this.word+=t;else{if("["===t){var s=[];return s.push(this.word),this.level++,null===this.root?this.root=s:this.currentObject.push(s),this.stack.push(this.currentObject),this.currentObject=s,void(this.state=K)}if(!$.test(t))throw new Error("havn't handled \""+t+'" in keyword yet, index '+this.place);this.afterItem(t)}},e.prototype.neutral=function(t){if(Z.test(t))return this.word=t,void(this.state=2);if('"'===t)return this.word="",void(this.state=4);if(tt.test(t))return this.word=t,void(this.state=3);if(!$.test(t))throw new Error("havn't handled \""+t+'" in neutral yet, index '+this.place);this.afterItem(t)},e.prototype.output=function(){for(;this.place<this.text.length;)this.readCharicter();if(-1===this.state)return this.root;throw new Error('unable to parse string "'+this.text+'". State is '+this.state)};var st,it=.017453292519943295,at=function(t){var s=new e(t).output(),i=s.shift(),a=s.shift();s.unshift(["name",a]),s.unshift(["type",i]);var h={};return n(s,h),o(h),h};(st=l)("EPSG:4326","+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),st("EPSG:4269","+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),st("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),st.WGS84=st["EPSG:4326"],st["EPSG:3785"]=st["EPSG:3857"],st.GOOGLE=st["EPSG:3857"],st["EPSG:900913"]=st["EPSG:3857"],st["EPSG:102113"]=st["EPSG:3857"];function ht(t,s,i){var a=t*s;return i/Math.sqrt(1-a*a)}function et(t){return t<0?-1:1}function nt(t){return Math.abs(t)<=Q?t:t-et(t)*F}function rt(t,s,i){var a=t*i,h=.5*t,a=Math.pow((1-a)/(1+a),h);return Math.tan(.5*(z-s))/a}function ot(t,s){for(var i,a,h=.5*t,e=z-2*Math.atan(s),n=0;n<=15;n++)if(i=t*Math.sin(e),e+=a=z-2*Math.atan(s*Math.pow((1-i)/(1+i),h))-e,Math.abs(a)<=1e-10)return e;return-9999}var lt=["PROJECTEDCRS","PROJCRS","GEOGCS","GEOCCS","PROJCS","LOCAL_CS","GEODCRS","GEODETICCRS","GEODETICDATUM","ENGCRS","ENGINEERINGCRS"],Mt=["3857","900913","3785","102113"],ct=function(t,s){var i,a;if(t=t||{},!s)return t;for(a in s)void 0!==(i=s[a])&&(t[a]=i);return t},ut=[{init:function(){var t=this.b/this.a;this.es=1-t*t,"x0"in this||(this.x0=0),"y0"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=ht(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},forward:function(t){var s,i,a,h,e=t.x,n=t.y;return 90<n*B&&n*B<-90&&180<e*B&&e*B<-180||Math.abs(Math.abs(n)-z)<=D?null:(h=this.sphere?(a=this.x0+this.a*this.k0*nt(e-this.long0),this.y0+this.a*this.k0*Math.log(Math.tan(U+.5*n))):(s=Math.sin(n),i=rt(this.e,n,s),a=this.x0+this.a*this.k0*nt(e-this.long0),this.y0-this.a*this.k0*Math.log(i)),t.x=a,t.y=h,t)},inverse:function(t){var s,i,a=t.x-this.x0,h=t.y-this.y0;if(this.sphere)i=z-2*Math.atan(Math.exp(-h/(this.a*this.k0)));else{var e=Math.exp(-h/(this.a*this.k0));if(-9999===(i=ot(this.e,e)))return null}return s=nt(this.long0+a/(this.a*this.k0)),t.x=s,t.y=i,t},names:["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","merc"]},{init:function(){},forward:t,inverse:t,names:["longlat","identity"]}],ft={},mt=[],pt={start:function(){ut.forEach(s)},add:s,get:function(t){if(!t)return!1;var s=t.toLowerCase();return void 0!==ft[s]&&mt[ft[s]]?mt[ft[s]]:void 0}},dt={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"},andrae:{a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"},clrk80:{a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk58:{a:6378293.645208759,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:6378157.5,b:6356772.2,ellipseName:"New International 1967"},plessis:{a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:6355834.8467,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS7:{a:6378135,rf:298.26,ellipseName:"WGS 72"}},yt=dt.WGS84={a:6378137,rf:298.257223563,ellipseName:"WGS 84"};dt.sphere={a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"};var _t={wgs84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"}};q.projections=pt,q.projections.start();var xt=function(t,s,i){return h=s,((a=t).datum_type!==h.datum_type||a.a!==h.a||5e-11<Math.abs(a.es-h.es)||(a.datum_type===I?a.datum_params[0]!==h.datum_params[0]||a.datum_params[1]!==h.datum_params[1]||a.datum_params[2]!==h.datum_params[2]:a.datum_type===O&&(a.datum_params[0]!==h.datum_params[0]||a.datum_params[1]!==h.datum_params[1]||a.datum_params[2]!==h.datum_params[2]||a.datum_params[3]!==h.datum_params[3]||a.datum_params[4]!==h.datum_params[4]||a.datum_params[5]!==h.datum_params[5]||a.datum_params[6]!==h.datum_params[6])))&&t.datum_type!==G&&s.datum_type!==G&&(t.es!==s.es||t.a!==s.a||u(t.datum_type)||u(s.datum_type))?(i=M(i,t.es,t.a),u(t.datum_type)&&(i=function(t,s,i){if(s===I)return{x:t.x+i[0],y:t.y+i[1],z:t.z+i[2]};if(s===O){var a=i[0],h=i[1],e=i[2],n=i[3],r=i[4],o=i[5],l=i[6];return{x:l*(t.x-o*t.y+r*t.z)+a,y:l*(o*t.x+t.y-n*t.z)+h,z:l*(-r*t.x+n*t.y+t.z)+e}}}(i,t.datum_type,t.datum_params)),u(s.datum_type)&&(i=function(t,s,i){if(s===I)return{x:t.x-i[0],y:t.y-i[1],z:t.z-i[2]};if(s===O){var a=i[0],h=i[1],e=i[2],n=i[3],r=i[4],o=i[5],l=i[6],M=(t.x-a)/l,c=(t.y-h)/l,u=(t.z-e)/l;return{x:M+o*c-r*u,y:-o*M+c+n*u,z:r*M-n*c+u}}}(i,s.datum_type,s.datum_params)),c(i,s.es,s.a,s.b)):i;var a,h},gt=function(t,s,i){for(var a,h,e=i.x,n=i.y,r=i.z||0,o={},l=0;l<3;l++)if(!s||2!==l||void 0!==i.z)switch(h=0===l?(a=e,-1!=="ew".indexOf(t.axis[l])?"x":"y"):1===l?(a=n,-1!=="ns".indexOf(t.axis[l])?"y":"x"):(a=r,"z"),t.axis[l]){case"e":case"w":case"n":case"s":o[h]=a;break;case"u":void 0!==i[h]&&(o.z=a);break;case"d":void 0!==i[h]&&(o.z=-a);break;default:return null}return o},bt=function(t){var s={x:t[0],y:t[1]};return 2<t.length&&(s.z=t[2]),3<t.length&&(s.m=t[3]),s},vt=function(t){i(t.x),i(t.y)},wt=q("WGS84"),Ct=6,Pt="AJSAJS",St="AFAFAF",Nt=65,kt=73,Et=79,qt=86,It=90,Ot={forward:d,inverse:function(t){var s=g(v(t.toUpperCase()));return s.lat&&s.lon?[s.lon,s.lat,s.lon,s.lat]:[s.left,s.bottom,s.right,s.top]},toPoint:y};C.fromMGRS=function(t){return new C(y(t))},C.prototype.toMGRS=function(t){return d([this.x,this.y],t)};function At(t){var s=[];s[0]=1-t*(.25+t*(.046875+t*(.01953125+t*ts))),s[1]=t*(.75-t*(.046875+t*(.01953125+t*ts)));var i=t*t;return s[2]=i*(.46875-t*(.013020833333333334+.007120768229166667*t)),i*=t,s[3]=i*(.3645833333333333-.005696614583333333*t),s[4]=i*t*.3076171875,s}function Gt(t,s,i,a){return i*=s,s*=s,a[0]*t-i*(a[1]+s*(a[2]+s*(a[3]+s*a[4])))}function jt(t,s,i){for(var a=1/(1-s),h=t,e=20;e;--e){var n=Math.sin(h),r=1-s*n*n;if(h-=r=(Gt(h,n,Math.cos(h),i)-t)*(r*Math.sqrt(r))*a,Math.abs(r)<D)return h}return h}function zt(t){var s=Math.exp(t);return(s-1/s)/2}function Rt(t,s){t=Math.abs(t),s=Math.abs(s);var i=Math.max(t,s),a=Math.min(t,s)/(i||1);return i*Math.sqrt(1+Math.pow(a,2))}function Lt(t){var s,i,a,h=Math.abs(t);return s=h*(1+h/(Rt(1,h)+1)),h=0==(a=(i=1+s)-1)?s:s*Math.log(i)/a,t<0?-h:h}function Tt(t,s){for(var i,a=2*Math.cos(2*s),h=t.length-1,e=t[h],n=0;0<=--h;)i=a*e-n+t[h],n=e,e=i;return s+i*Math.sin(2*s)}function Dt(t,s,i){for(var a,h,e,n,r=Math.sin(s),o=Math.cos(s),l=zt(i),M=(e=i,((n=Math.exp(e))+1/n)/2),c=2*o*M,u=-2*r*l,f=t.length-1,m=t[f],p=0,d=0,y=0;0<=--f;)a=d,h=p,m=c*(d=m)-a-u*(p=y)+t[f],y=u*d-h+c*p;return[(c=r*M)*m-(u=o*l)*y,c*y+u*m]}function Bt(t,s){return Math.pow((1-t)/(1+t),s)}function Ut(t,s,i,a,h){return t*h-s*Math.sin(2*h)+i*Math.sin(4*h)-a*Math.sin(6*h)}function Ft(t){return 1-.25*t*(1+t/16*(3+1.25*t))}function Qt(t){return.375*t*(1+.25*t*(1+.46875*t))}function Wt(t){return.05859375*t*t*(1+.75*t)}function Xt(t){return t*t*t*(35/3072)}function Ht(t,s,i){var a=s*i;return t/Math.sqrt(1-a*a)}function Jt(t){return Math.abs(t)<z?t:t-et(t)*Math.PI}function Kt(t,s,i,a,h){for(var e,n=t/s,r=0;r<15;r++)if(n+=e=(t-(s*n-i*Math.sin(2*n)+a*Math.sin(4*n)-h*Math.sin(6*n)))/(s-2*i*Math.cos(2*n)+4*a*Math.cos(4*n)-6*h*Math.cos(6*n)),Math.abs(e)<=1e-10)return n;return NaN}function Vt(t,s){var i;return 1e-7<t?(1-t*t)*(s/(1-(i=t*s)*i)-.5/t*Math.log((1-i)/(1+i))):2*s}function Zt(t){return 1<Math.abs(t)&&(t=1<t?1:-1),Math.asin(t)}function Yt(t,s){return t[0]+s*(t[1]+s*(t[2]+s*t[3]))}var $t,ts=.01068115234375,ss={init:function(){this.x0=void 0!==this.x0?this.x0:0,this.y0=void 0!==this.y0?this.y0:0,this.long0=void 0!==this.long0?this.long0:0,this.lat0=void 0!==this.lat0?this.lat0:0,this.es&&(this.en=At(this.es),this.ml0=Gt(this.lat0,Math.sin(this.lat0),Math.cos(this.lat0),this.en))},forward:function(t){var s=t.x,i=t.y,a=nt(s-this.long0),h=Math.sin(i),e=Math.cos(i);if(this.es){var n=e*a,r=Math.pow(n,2),o=this.ep2*Math.pow(e,2),l=Math.pow(o,2),M=Math.abs(e)>D?Math.tan(i):0,c=Math.pow(M,2),u=Math.pow(c,2),f=1-this.es*Math.pow(h,2);n/=Math.sqrt(f);var m=Gt(i,h,e,this.en),p=this.a*(this.k0*n*(1+r/6*(1-c+o+r/20*(5-18*c+u+14*o-58*c*o+r/42*(61+179*u-u*c-479*c)))))+this.x0,d=this.a*(this.k0*(m-this.ml0+h*a*n/2*(1+r/12*(5-c+9*o+4*l+r/30*(61+u-58*c+270*o-330*c*o+r/56*(1385+543*u-u*c-3111*c))))))+this.y0}else{var y=e*Math.sin(a);if(Math.abs(Math.abs(y)-1)<D)return 93;if(p=.5*this.a*this.k0*Math.log((1+y)/(1-y))+this.x0,d=e*Math.cos(a)/Math.sqrt(1-Math.pow(y,2)),1<=(y=Math.abs(d))){if(D<y-1)return 93;d=0}else d=Math.acos(d);i<0&&(d=-d),d=this.a*this.k0*(d-this.lat0)+this.y0}return t.x=p,t.y=d,t},inverse:function(t){var s,i,a,h,e,n,r,o,l,M,c,u,f,m,p,d,y,_=(t.x-this.x0)*(1/this.a),x=(t.y-this.y0)*(1/this.a);return f=this.es?(l=this.ml0+x/this.k0,s=jt(l,this.es,this.en),Math.abs(s)<z?(i=Math.sin(s),a=Math.cos(s),h=Math.abs(a)>D?Math.tan(s):0,e=this.ep2*Math.pow(a,2),n=Math.pow(e,2),r=Math.pow(h,2),o=Math.pow(r,2),l=1-this.es*Math.pow(i,2),M=_*Math.sqrt(l)/this.k0,u=s-(l*=h)*(c=Math.pow(M,2))/(1-this.es)*.5*(1-c/12*(5+3*r-9*e*r+e-4*n-c/30*(61+90*r-252*e*r+45*o+46*e-c/56*(1385+3633*r+4095*o+1574*o*r)))),nt(this.long0+M*(1-c/6*(1+2*r+e-c/20*(5+28*r+24*o+8*e*r+6*e-c/42*(61+662*r+1320*o+720*o*r))))/a)):(u=z*et(x),0)):(p=.5*((m=Math.exp(_/this.k0))-1/m),d=this.lat0+x/this.k0,y=Math.cos(d),l=Math.sqrt((1-Math.pow(y,2))/(1+Math.pow(p,2))),u=Math.asin(l),x<0&&(u=-u),0==p&&0===y?0:nt(Math.atan2(p,y)+this.long0)),t.x=f,t.y=u,t},names:["Transverse_Mercator","Transverse Mercator","tmerc"]},is={init:function(){if(void 0===this.es||this.es<=0)throw new Error("incorrect elliptical usage");this.x0=void 0!==this.x0?this.x0:0,this.y0=void 0!==this.y0?this.y0:0,this.long0=void 0!==this.long0?this.long0:0,this.lat0=void 0!==this.lat0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var t=this.es/(1+Math.sqrt(1-this.es)),s=t/(2-t),i=s;this.cgb[0]=s*(2+s*(-2/3+s*(s*(116/45+s*(26/45+-2854/675*s))-2))),this.cbg[0]=s*(s*(2/3+s*(4/3+s*(-82/45+s*(32/45+4642/4725*s))))-2),i*=s,this.cgb[1]=i*(7/3+s*(s*(-227/45+s*(2704/315+2323/945*s))-1.6)),this.cbg[1]=i*(5/3+s*(-16/15+s*(-13/9+s*(904/315+-1522/945*s)))),i*=s,this.cgb[2]=i*(56/15+s*(-136/35+s*(-1262/105+73814/2835*s))),this.cbg[2]=i*(-26/15+s*(34/21+s*(1.6+-12686/2835*s))),i*=s,this.cgb[3]=i*(4279/630+s*(-332/35+-399572/14175*s)),this.cbg[3]=i*(1237/630+s*(-24832/14175*s-2.4)),i*=s,this.cgb[4]=i*(4174/315+-144838/6237*s),this.cbg[4]=i*(-734/315+109598/31185*s),i*=s,this.cgb[5]=i*(601676/22275),this.cbg[5]=i*(444337/155925),i=Math.pow(s,2),this.Qn=this.k0/(1+s)*(1+i*(.25+i*(1/64+i/256))),this.utg[0]=s*(s*(2/3+s*(-37/96+s*(1/360+s*(81/512+-96199/604800*s))))-.5),this.gtu[0]=s*(.5+s*(-2/3+s*(5/16+s*(41/180+s*(-127/288+7891/37800*s))))),this.utg[1]=i*(-1/48+s*(-1/15+s*(437/1440+s*(-46/105+1118711/3870720*s)))),this.gtu[1]=i*(13/48+s*(s*(557/1440+s*(281/630+-1983433/1935360*s))-.6)),i*=s,this.utg[2]=i*(-17/480+s*(37/840+s*(209/4480+-5569/90720*s))),this.gtu[2]=i*(61/240+s*(-103/140+s*(15061/26880+167603/181440*s))),i*=s,this.utg[3]=i*(-4397/161280+s*(11/504+830251/7257600*s)),this.gtu[3]=i*(49561/161280+s*(-179/168+6601661/7257600*s)),i*=s,this.utg[4]=i*(-4583/161280+108847/3991680*s),this.gtu[4]=i*(34729/80640+-3418889/1995840*s),i*=s,this.utg[5]=-.03233083094085698*i,this.gtu[5]=.6650675310896665*i;var a=Tt(this.cbg,this.lat0);this.Zb=-this.Qn*(a+function(t,s){for(var i,a=2*Math.cos(s),h=t.length-1,e=t[h],n=0;0<=--h;)i=a*e-n+t[h],n=e,e=i;return Math.sin(s)*i}(this.gtu,2*a))},forward:function(t){var s=nt(t.x-this.long0),i=t.y,i=Tt(this.cbg,i),a=Math.sin(i),h=Math.cos(i),e=Math.sin(s),n=Math.cos(s);i=Math.atan2(a,n*h),s=Math.atan2(e*h,Rt(a,h*n)),s=Lt(Math.tan(s));var r,o,l=Dt(this.gtu,2*i,2*s);return i+=l[0],s+=l[1],o=Math.abs(s)<=2.623395162778?(r=this.a*(this.Qn*s)+this.x0,this.a*(this.Qn*i+this.Zb)+this.y0):r=1/0,t.x=r,t.y=o,t},inverse:function(t){var s,i,a,h,e,n,r,o=(t.x-this.x0)*(1/this.a),l=(t.y-this.y0)*(1/this.a);return l=(l-this.Zb)/this.Qn,o/=this.Qn,r=Math.abs(o)<=2.623395162778?(l+=(s=Dt(this.utg,2*l,2*o))[0],o+=s[1],o=Math.atan(zt(o)),i=Math.sin(l),a=Math.cos(l),h=Math.sin(o),e=Math.cos(o),l=Math.atan2(i*e,Rt(h,e*a)),o=Math.atan2(h,e*a),n=nt(o+this.long0),Tt(this.cgb,l)):n=1/0,t.x=n,t.y=r,t},names:["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc"]},as={init:function(){var t=function(t,s){if(void 0===t){if((t=Math.floor(30*(nt(s)+Math.PI)/Math.PI)+1)<0)return 0;if(60<t)return 60}return t}(this.zone,this.long0);if(void 0===t)throw new Error("unknown utm zone");this.lat0=0,this.long0=(6*Math.abs(t)-183)*N,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,is.init.apply(this),this.forward=is.forward,this.inverse=is.inverse},names:["Universal Transverse Mercator System","utm"],dependsOn:"etmerc"},hs={init:function(){var t=Math.sin(this.lat0),s=Math.cos(this.lat0);s*=s,this.rc=Math.sqrt(1-this.es)/(1-this.es*t*t),this.C=Math.sqrt(1+this.es*s*s/(1-this.es)),this.phic0=Math.asin(t/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+U)/(Math.pow(Math.tan(.5*this.lat0+U),this.C)*Bt(this.e*t,this.ratexp))},forward:function(t){var s=t.x,i=t.y;return t.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*i+U),this.C)*Bt(this.e*Math.sin(i),this.ratexp))-z,t.x=this.C*s,t},inverse:function(t){for(var s=t.x/this.C,i=t.y,a=Math.pow(Math.tan(.5*i+U)/this.K,1/this.C),h=20;0<h&&(i=2*Math.atan(a*Bt(this.e*Math.sin(t.y),-.5*this.e))-z,!(Math.abs(i-t.y)<1e-14));--h)t.y=i;return h?(t.x=s,t.y=i,t):null},names:["gauss"]},es={init:function(){hs.init.apply(this),this.rc&&(this.sinc0=Math.sin(this.phic0),this.cosc0=Math.cos(this.phic0),this.R2=2*this.rc,this.title||(this.title="Oblique Stereographic Alternative"))},forward:function(t){var s,i,a,h;return t.x=nt(t.x-this.long0),hs.forward.apply(this,[t]),s=Math.sin(t.y),i=Math.cos(t.y),a=Math.cos(t.x),h=this.k0*this.R2/(1+this.sinc0*s+this.cosc0*i*a),t.x=h*i*Math.sin(t.x),t.y=h*(this.cosc0*s-this.sinc0*i*a),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t},inverse:function(t){var s,i,a,h,e,n;return t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,t.x/=this.k0,t.y/=this.k0,n=(s=Math.sqrt(t.x*t.x+t.y*t.y))?(i=2*Math.atan2(s,this.R2),a=Math.sin(i),h=Math.cos(i),e=Math.asin(h*this.sinc0+t.y*a*this.cosc0/s),Math.atan2(t.x*a,s*this.cosc0*h-t.y*this.sinc0*a)):(e=this.phic0,0),t.x=n,t.y=e,hs.inverse.apply(this,[t]),t.x=nt(t.x+this.long0),t},names:["Stereographic_North_Pole","Oblique_Stereographic","Polar_Stereographic","sterea","Oblique Stereographic Alternative","Double_Stereographic"]},ns={init:function(){this.coslat0=Math.cos(this.lat0),this.sinlat0=Math.sin(this.lat0),this.sphere?1===this.k0&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=D&&(this.k0=.5*(1+et(this.lat0)*Math.sin(this.lat_ts))):(Math.abs(this.coslat0)<=D&&(0<this.lat0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),1===this.k0&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=D&&(this.k0=.5*this.cons*ht(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/rt(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=ht(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-z,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))},forward:function(t){var s,i,a,h,e,n,r=t.x,o=t.y,l=Math.sin(o),M=Math.cos(o),c=nt(r-this.long0);return Math.abs(Math.abs(r-this.long0)-Math.PI)<=D&&Math.abs(o+this.lat0)<=D?(t.x=NaN,t.y=NaN):this.sphere?(s=2*this.k0/(1+this.sinlat0*l+this.coslat0*M*Math.cos(c)),t.x=this.a*s*M*Math.sin(c)+this.x0,t.y=this.a*s*(this.coslat0*l-this.sinlat0*M*Math.cos(c))+this.y0):(i=2*Math.atan(this.ssfn_(o,l,this.e))-z,h=Math.cos(i),a=Math.sin(i),Math.abs(this.coslat0)<=D?(e=rt(this.e,o*this.con,this.con*l),n=2*this.a*this.k0*e/this.cons,t.x=this.x0+n*Math.sin(r-this.long0),t.y=this.y0-this.con*n*Math.cos(r-this.long0)):(Math.abs(this.sinlat0)<D?(s=2*this.a*this.k0/(1+h*Math.cos(c)),t.y=s*a):(s=2*this.a*this.k0*this.ms1/(this.cosX0*(1+this.sinX0*a+this.cosX0*h*Math.cos(c))),t.y=s*(this.cosX0*a-this.sinX0*h*Math.cos(c))+this.y0),t.x=s*h*Math.sin(c)+this.x0)),t},inverse:function(t){t.x-=this.x0,t.y-=this.y0;var s,i,a,h=Math.sqrt(t.x*t.x+t.y*t.y);if(this.sphere){var e=2*Math.atan(h/(2*this.a*this.k0)),n=this.long0,r=this.lat0;return h<=D||(r=Math.asin(Math.cos(e)*this.sinlat0+t.y*Math.sin(e)*this.coslat0/h),n=nt(Math.abs(this.coslat0)<D?0<this.lat0?this.long0+Math.atan2(t.x,-1*t.y):this.long0+Math.atan2(t.x,t.y):this.long0+Math.atan2(t.x*Math.sin(e),h*this.coslat0*Math.cos(e)-t.y*this.sinlat0*Math.sin(e)))),t.x=n,t.y=r,t}if(Math.abs(this.coslat0)<=D){if(h<=D)return r=this.lat0,n=this.long0,t.x=n,t.y=r,t;t.x*=this.con,t.y*=this.con,s=h*this.cons/(2*this.a*this.k0),r=this.con*ot(this.e,s),n=this.con*nt(this.con*this.long0+Math.atan2(t.x,-1*t.y))}else i=2*Math.atan(h*this.cosX0/(2*this.a*this.k0*this.ms1)),n=this.long0,h<=D?a=this.X0:(a=Math.asin(Math.cos(i)*this.sinX0+t.y*Math.sin(i)*this.cosX0/h),n=nt(this.long0+Math.atan2(t.x*Math.sin(i),h*this.cosX0*Math.cos(i)-t.y*this.sinX0*Math.sin(i)))),r=-1*ot(this.e,Math.tan(.5*(z+a)));return t.x=n,t.y=r,t},names:["stere","Stereographic_South_Pole","Polar Stereographic (variant B)"],ssfn_:function(t,s,i){return s*=i,Math.tan(.5*(z+t))*Math.pow((1-s)/(1+s),.5*i)}},rs={init:function(){var t=this.lat0;this.lambda0=this.long0;var s=Math.sin(t),i=this.a,a=1/this.rf,h=2*a-Math.pow(a,2),e=this.e=Math.sqrt(h);this.R=this.k0*i*Math.sqrt(1-h)/(1-h*Math.pow(s,2)),this.alpha=Math.sqrt(1+h/(1-h)*Math.pow(Math.cos(t),4)),this.b0=Math.asin(s/this.alpha);var n=Math.log(Math.tan(Math.PI/4+this.b0/2)),r=Math.log(Math.tan(Math.PI/4+t/2)),o=Math.log((1+e*s)/(1-e*s));this.K=n-this.alpha*r+this.alpha*e/2*o},forward:function(t){var s=Math.log(Math.tan(Math.PI/4-t.y/2)),i=this.e/2*Math.log((1+this.e*Math.sin(t.y))/(1-this.e*Math.sin(t.y))),a=-this.alpha*(s+i)+this.K,h=2*(Math.atan(Math.exp(a))-Math.PI/4),e=this.alpha*(t.x-this.lambda0),n=Math.atan(Math.sin(e)/(Math.sin(this.b0)*Math.tan(h)+Math.cos(this.b0)*Math.cos(e))),r=Math.asin(Math.cos(this.b0)*Math.sin(h)-Math.sin(this.b0)*Math.cos(h)*Math.cos(e));return t.y=this.R/2*Math.log((1+Math.sin(r))/(1-Math.sin(r)))+this.y0,t.x=this.R*n+this.x0,t},inverse:function(t){for(var s=t.x-this.x0,i=t.y-this.y0,a=s/this.R,h=2*(Math.atan(Math.exp(i/this.R))-Math.PI/4),e=Math.asin(Math.cos(this.b0)*Math.sin(h)+Math.sin(this.b0)*Math.cos(h)*Math.cos(a)),n=Math.atan(Math.sin(a)/(Math.cos(this.b0)*Math.cos(a)-Math.sin(this.b0)*Math.tan(h))),r=this.lambda0+n/this.alpha,o=0,l=e,M=-1e3,c=0;1e-7<Math.abs(l-M);){if(20<++c)return;o=1/this.alpha*(Math.log(Math.tan(Math.PI/4+e/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(l))/2)),M=l,l=2*Math.atan(Math.exp(o))-Math.PI/2}return t.x=r,t.y=l,t},names:["somerc"]},os={init:function(){this.no_off=this.no_off||!1,this.no_rot=this.no_rot||!1,isNaN(this.k0)&&(this.k0=1);var t=Math.sin(this.lat0),s=Math.cos(this.lat0),i=this.e*t;this.bl=Math.sqrt(1+this.es/(1-this.es)*Math.pow(s,4)),this.al=this.a*this.bl*this.k0*Math.sqrt(1-this.es)/(1-i*i);var a,h,e,n,r,o,l,M,c,u,f=rt(this.e,this.lat0,t),m=this.bl/s*Math.sqrt((1-this.es)/(1-i*i));m*m<1&&(m=1),isNaN(this.longc)?(h=rt(this.e,this.lat1,Math.sin(this.lat1)),e=rt(this.e,this.lat2,Math.sin(this.lat2)),0<=this.lat0?this.el=(m+Math.sqrt(m*m-1))*Math.pow(f,this.bl):this.el=(m-Math.sqrt(m*m-1))*Math.pow(f,this.bl),n=Math.pow(h,this.bl),r=Math.pow(e,this.bl),o=.5*((a=this.el/n)-1/a),l=(this.el*this.el-r*n)/(this.el*this.el+r*n),M=(r-n)/(r+n),c=nt(this.long1-this.long2),this.long0=.5*(this.long1+this.long2)-Math.atan(l*Math.tan(.5*this.bl*c)/M)/this.bl,this.long0=nt(this.long0),u=nt(this.long1-this.long0),this.gamma0=Math.atan(Math.sin(this.bl*u)/o),this.alpha=Math.asin(m*Math.sin(this.gamma0))):(a=0<=this.lat0?m+Math.sqrt(m*m-1):m-Math.sqrt(m*m-1),this.el=a*Math.pow(f,this.bl),o=.5*(a-1/a),this.gamma0=Math.asin(Math.sin(this.alpha)/m),this.long0=this.longc-Math.asin(o*Math.tan(this.gamma0))/this.bl),this.no_off?this.uc=0:0<=this.lat0?this.uc=this.al/this.bl*Math.atan2(Math.sqrt(m*m-1),Math.cos(this.alpha)):this.uc=-1*this.al/this.bl*Math.atan2(Math.sqrt(m*m-1),Math.cos(this.alpha))},forward:function(t){var s,i,a,h,e,n,r,o,l,M=t.x,c=t.y,u=nt(M-this.long0);return l=Math.abs(Math.abs(c)-z)<=D?(s=0<c?-1:1,o=this.al/this.bl*Math.log(Math.tan(U+s*this.gamma0*.5)),-1*s*z*this.al/this.bl):(i=rt(this.e,c,Math.sin(c)),h=.5*((a=this.el/Math.pow(i,this.bl))-1/a),e=.5*(a+1/a),n=Math.sin(this.bl*u),r=(h*Math.sin(this.gamma0)-n*Math.cos(this.gamma0))/e,o=Math.abs(Math.abs(r)-1)<=D?Number.POSITIVE_INFINITY:.5*this.al*Math.log((1-r)/(1+r))/this.bl,Math.abs(Math.cos(this.bl*u))<=D?this.al*this.bl*u:this.al*Math.atan2(h*Math.cos(this.gamma0)+n*Math.sin(this.gamma0),Math.cos(this.bl*u))/this.bl),this.no_rot?(t.x=this.x0+l,t.y=this.y0+o):(l-=this.uc,t.x=this.x0+o*Math.cos(this.alpha)+l*Math.sin(this.alpha),t.y=this.y0+l*Math.cos(this.alpha)-o*Math.sin(this.alpha)),t},inverse:function(t){var s,i;this.no_rot?(i=t.y-this.y0,s=t.x-this.x0):(i=(t.x-this.x0)*Math.cos(this.alpha)-(t.y-this.y0)*Math.sin(this.alpha),s=(t.y-this.y0)*Math.cos(this.alpha)+(t.x-this.x0)*Math.sin(this.alpha),s+=this.uc);var a=Math.exp(-1*this.bl*i/this.al),h=.5*(a-1/a),e=.5*(a+1/a),n=Math.sin(this.bl*s/this.al),r=(n*Math.cos(this.gamma0)+h*Math.sin(this.gamma0))/e,o=Math.pow(this.el/Math.sqrt((1+r)/(1-r)),1/this.bl);return Math.abs(r-1)<D?(t.x=this.long0,t.y=z):Math.abs(1+r)<D?(t.x=this.long0,t.y=-1*z):(t.y=ot(this.e,o),t.x=nt(this.long0-Math.atan2(h*Math.cos(this.gamma0)-n*Math.sin(this.gamma0),Math.cos(this.bl*s/this.al))/this.bl)),t},names:["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","omerc"]},ls={init:function(){var t,s,i,a,h,e,n,r,o,l;this.lat2||(this.lat2=this.lat1),this.k0||(this.k0=1),this.x0=this.x0||0,this.y0=this.y0||0,Math.abs(this.lat1+this.lat2)<D||(t=this.b/this.a,this.e=Math.sqrt(1-t*t),s=Math.sin(this.lat1),i=Math.cos(this.lat1),a=ht(this.e,s,i),h=rt(this.e,this.lat1,s),e=Math.sin(this.lat2),n=Math.cos(this.lat2),r=ht(this.e,e,n),o=rt(this.e,this.lat2,e),l=rt(this.e,this.lat0,Math.sin(this.lat0)),Math.abs(this.lat1-this.lat2)>D?this.ns=Math.log(a/r)/Math.log(h/o):this.ns=s,isNaN(this.ns)&&(this.ns=s),this.f0=a/(this.ns*Math.pow(h,this.ns)),this.rh=this.a*this.f0*Math.pow(l,this.ns),this.title||(this.title="Lambert Conformal Conic"))},forward:function(t){var s=t.x,i=t.y;Math.abs(2*Math.abs(i)-Math.PI)<=D&&(i=et(i)*(z-2*D));var a,h,e=Math.abs(Math.abs(i)-z);if(D<e)a=rt(this.e,i,Math.sin(i)),h=this.a*this.f0*Math.pow(a,this.ns);else{if((e=i*this.ns)<=0)return null;h=0}var n=this.ns*nt(s-this.long0);return t.x=this.k0*(h*Math.sin(n))+this.x0,t.y=this.k0*(this.rh-h*Math.cos(n))+this.y0,t},inverse:function(t){var s,i,a,h,e=(t.x-this.x0)/this.k0,n=this.rh-(t.y-this.y0)/this.k0,r=0<this.ns?(s=Math.sqrt(e*e+n*n),1):(s=-Math.sqrt(e*e+n*n),-1),o=0;if(0!==s&&(o=Math.atan2(r*e,r*n)),0!==s||0<this.ns){if(r=1/this.ns,i=Math.pow(s/(this.a*this.f0),r),-9999===(a=ot(this.e,i)))return null}else a=-z;return h=nt(o/this.ns+this.long0),t.x=h,t.y=a,t},names:["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_2SP","lcc"]},Ms={init:function(){this.a=6377397.155,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.4334234309119251),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq},forward:function(t){var s=t.x,i=t.y,a=nt(s-this.long0),h=Math.pow((1+this.e*Math.sin(i))/(1-this.e*Math.sin(i)),this.alfa*this.e/2),e=2*(Math.atan(this.k*Math.pow(Math.tan(i/2+this.s45),this.alfa)/h)-this.s45),n=-a*this.alfa,r=Math.asin(Math.cos(this.ad)*Math.sin(e)+Math.sin(this.ad)*Math.cos(e)*Math.cos(n)),o=Math.asin(Math.cos(e)*Math.sin(n)/Math.cos(r)),l=this.n*o,M=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(r/2+this.s45),this.n);return t.y=M*Math.cos(l),t.x=M*Math.sin(l),this.czech||(t.y*=-1,t.x*=-1),t},inverse:function(t){var s,i,a,h,e,n,r,o=t.x;t.x=t.y,t.y=o,this.czech||(t.y*=-1,t.x*=-1),e=Math.sqrt(t.x*t.x+t.y*t.y),h=Math.atan2(t.y,t.x)/Math.sin(this.s0),a=2*(Math.atan(Math.pow(this.ro0/e,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),s=Math.asin(Math.cos(this.ad)*Math.sin(a)-Math.sin(this.ad)*Math.cos(a)*Math.cos(h)),i=Math.asin(Math.cos(a)*Math.sin(h)/Math.cos(s)),t.x=this.long0-i/this.alfa,n=s;for(var l=r=0;t.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(s/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(n))/(1-this.e*Math.sin(n)),this.e/2))-this.s45),Math.abs(n-t.y)<1e-10&&(r=1),n=t.y,l+=1,0===r&&l<15;);return 15<=l?null:t},names:["Krovak","krovak"]},cs={init:function(){this.sphere||(this.e0=Ft(this.es),this.e1=Qt(this.es),this.e2=Wt(this.es),this.e3=Xt(this.es),this.ml0=this.a*Ut(this.e0,this.e1,this.e2,this.e3,this.lat0))},forward:function(t){var s,i,a,h,e,n,r,o,l,M=t.x,c=t.y,M=nt(M-this.long0);return l=this.sphere?(o=this.a*Math.asin(Math.cos(c)*Math.sin(M)),this.a*(Math.atan2(Math.tan(c),Math.cos(M))-this.lat0)):(s=Math.sin(c),i=Math.cos(c),a=Ht(this.a,this.e,s),h=Math.tan(c)*Math.tan(c),o=a*(e=M*Math.cos(c))*(1-(n=e*e)*h*(1/6-(8-h+8*(r=this.es*i*i/(1-this.es)))*n/120)),this.a*Ut(this.e0,this.e1,this.e2,this.e3,c)-this.ml0+a*s/i*n*(.5+(5-h+6*r)*n/24)),t.x=o+this.x0,t.y=l+this.y0,t},inverse:function(t){t.x-=this.x0,t.y-=this.y0;var s=t.x/this.a,i=t.y/this.a;if(this.sphere)var a=i+this.lat0,h=Math.asin(Math.sin(a)*Math.cos(s)),e=Math.atan2(Math.tan(s),Math.cos(a));else{var n=this.ml0/this.a+i,r=Kt(n,this.e0,this.e1,this.e2,this.e3);if(Math.abs(Math.abs(r)-z)<=D)return t.x=this.long0,t.y=z,i<0&&(t.y*=-1),t;var o=Ht(this.a,this.e,Math.sin(r)),l=o*o*o/this.a/this.a*(1-this.es),M=Math.pow(Math.tan(r),2),c=s*this.a/o,u=c*c;h=r-o*Math.tan(r)/l*c*c*(.5-(1+3*M)*c*c/24),e=c*(1-u*(M/3+(1+3*M)*M*u/15))/Math.cos(r)}return t.x=nt(e+this.long0),t.y=Jt(h),t},names:["Cassini","Cassini_Soldner","cass"]},us={init:function(){var t,s,i,a,h=Math.abs(this.lat0);if(Math.abs(h-z)<D?this.mode=this.lat0<0?this.S_POLE:this.N_POLE:Math.abs(h)<D?this.mode=this.EQUIT:this.mode=this.OBLIQ,0<this.es)switch(this.qp=Vt(this.e,1),this.mmf=.5/(1-this.es),this.apa=(s=this.es,(a=[])[0]=.3333333333333333*s,i=s*s,a[0]+=.17222222222222222*i,a[1]=.06388888888888888*i,i*=s,a[0]+=.10257936507936508*i,a[1]+=.0664021164021164*i,a[2]=.016415012942191543*i,a),this.mode){case this.N_POLE:case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=Vt(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))},forward:function(t){var s,i,a,h,e,n,r,o,l,M,c=t.x,u=t.y,c=nt(c-this.long0);if(this.sphere){if(e=Math.sin(u),M=Math.cos(u),a=Math.cos(c),this.mode===this.OBLIQ||this.mode===this.EQUIT){if((i=this.mode===this.EQUIT?1+M*a:1+this.sinph0*e+this.cosph0*M*a)<=D)return null;s=(i=Math.sqrt(2/i))*M*Math.sin(c),i*=this.mode===this.EQUIT?e:this.cosph0*e-this.sinph0*M*a}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(a=-a),Math.abs(u+this.lat0)<D)return null;i=U-.5*u,s=(i=2*(this.mode===this.S_POLE?Math.cos(i):Math.sin(i)))*Math.sin(c),i*=a}}else{switch(l=o=r=0,a=Math.cos(c),h=Math.sin(c),e=Math.sin(u),n=Vt(this.e,e),this.mode!==this.OBLIQ&&this.mode!==this.EQUIT||(r=n/this.qp,o=Math.sqrt(1-r*r)),this.mode){case this.OBLIQ:l=1+this.sinb1*r+this.cosb1*o*a;break;case this.EQUIT:l=1+o*a;break;case this.N_POLE:l=z+u,n=this.qp-n;break;case this.S_POLE:l=u-z,n=this.qp+n}if(Math.abs(l)<D)return null;switch(this.mode){case this.OBLIQ:case this.EQUIT:l=Math.sqrt(2/l),i=this.mode===this.OBLIQ?this.ymf*l*(this.cosb1*r-this.sinb1*o*a):(l=Math.sqrt(2/(1+o*a)))*r*this.ymf,s=this.xmf*l*o*h;break;case this.N_POLE:case this.S_POLE:0<=n?(s=(l=Math.sqrt(n))*h,i=a*(this.mode===this.S_POLE?l:-l)):s=i=0}}return t.x=this.a*s+this.x0,t.y=this.a*i+this.y0,t},inverse:function(t){t.x-=this.x0,t.y-=this.y0;var s,i,a,h,e,n,r,o,l,M,c=t.x/this.a,u=t.y/this.a;if(this.sphere){var f=0,m=0,p=Math.sqrt(c*c+u*u);if(1<(i=.5*p))return null;switch(i=2*Math.asin(i),this.mode!==this.OBLIQ&&this.mode!==this.EQUIT||(m=Math.sin(i),f=Math.cos(i)),this.mode){case this.EQUIT:i=Math.abs(p)<=D?0:Math.asin(u*m/p),c*=m,u=f*p;break;case this.OBLIQ:i=Math.abs(p)<=D?this.lat0:Math.asin(f*this.sinph0+u*m*this.cosph0/p),c*=m*this.cosph0,u=(f-Math.sin(i)*this.sinph0)*p;break;case this.N_POLE:u=-u,i=z-i;break;case this.S_POLE:i-=z}s=0!==u||this.mode!==this.EQUIT&&this.mode!==this.OBLIQ?Math.atan2(c,u):0}else{if(r=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(c/=this.dd,u*=this.dd,(n=Math.sqrt(c*c+u*u))<D)return t.x=this.long0,t.y=this.lat0,t;h=2*Math.asin(.5*n/this.rq),a=Math.cos(h),c*=h=Math.sin(h),u=this.mode===this.OBLIQ?(r=a*this.sinb1+u*h*this.cosb1/n,e=this.qp*r,n*this.cosb1*a-u*this.sinb1*h):(r=u*h/n,e=this.qp*r,n*a)}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(u=-u),!(e=c*c+u*u))return t.x=this.long0,t.y=this.lat0,t;r=1-e/this.qp,this.mode===this.S_POLE&&(r=-r)}s=Math.atan2(c,u),o=Math.asin(r),l=this.apa,M=o+o,i=o+l[0]*Math.sin(M)+l[1]*Math.sin(M+M)+l[2]*Math.sin(M+M+M)}return t.x=nt(this.long0+s),t.y=i,t},names:["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area","laea"],S_POLE:1,N_POLE:2,EQUIT:3,OBLIQ:4},fs={init:function(){Math.abs(this.lat1+this.lat2)<D||(this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e3=Math.sqrt(this.es),this.sin_po=Math.sin(this.lat1),this.cos_po=Math.cos(this.lat1),this.t1=this.sin_po,this.con=this.sin_po,this.ms1=ht(this.e3,this.sin_po,this.cos_po),this.qs1=Vt(this.e3,this.sin_po,this.cos_po),this.sin_po=Math.sin(this.lat2),this.cos_po=Math.cos(this.lat2),this.t2=this.sin_po,this.ms2=ht(this.e3,this.sin_po,this.cos_po),this.qs2=Vt(this.e3,this.sin_po,this.cos_po),this.sin_po=Math.sin(this.lat0),this.cos_po=Math.cos(this.lat0),this.t3=this.sin_po,this.qs0=Vt(this.e3,this.sin_po,this.cos_po),Math.abs(this.lat1-this.lat2)>D?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)},forward:function(t){var s=t.x,i=t.y;this.sin_phi=Math.sin(i),this.cos_phi=Math.cos(i);var a=Vt(this.e3,this.sin_phi,this.cos_phi),h=this.a*Math.sqrt(this.c-this.ns0*a)/this.ns0,e=this.ns0*nt(s-this.long0),n=h*Math.sin(e)+this.x0,r=this.rh-h*Math.cos(e)+this.y0;return t.x=n,t.y=r,t},inverse:function(t){var s,i,a,h,e,n;return t.x-=this.x0,t.y=this.rh-t.y+this.y0,a=0<=this.ns0?(s=Math.sqrt(t.x*t.x+t.y*t.y),1):(s=-Math.sqrt(t.x*t.x+t.y*t.y),-1),(h=0)!==s&&(h=Math.atan2(a*t.x,a*t.y)),a=s*this.ns0/this.a,n=this.sphere?Math.asin((this.c-a*a)/(2*this.ns0)):(i=(this.c-a*a)/this.ns0,this.phi1z(this.e3,i)),e=nt(h/this.ns0+this.long0),t.x=e,t.y=n,t},names:["Albers_Conic_Equal_Area","Albers","aea"],phi1z:function(t,s){var i,a,h,e,n=Zt(.5*s);if(t<D)return n;for(var r=t*t,o=1;o<=25;o++)if(n+=e=.5*(h=1-(a=t*(i=Math.sin(n)))*a)*h/Math.cos(n)*(s/(1-r)-i/h+.5/t*Math.log((1-a)/(1+a))),Math.abs(e)<=1e-7)return n;return null}},ms={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0),this.infinity_dist=1e3*this.a,this.rc=1},forward:function(t){var s,i,a=t.x,h=t.y,e=nt(a-this.long0),n=Math.sin(h),r=Math.cos(h),o=Math.cos(e),l=0<(s=this.sin_p14*n+this.cos_p14*r*o)||Math.abs(s)<=D?(i=this.x0+this.a*r*Math.sin(e)/s,this.y0+this.a*(this.cos_p14*n-this.sin_p14*r*o)/s):(i=this.x0+this.infinity_dist*r*Math.sin(e),this.y0+this.infinity_dist*(this.cos_p14*n-this.sin_p14*r*o));return t.x=i,t.y=l,t},inverse:function(t){var s,i,a,h,e,n;return t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,t.x/=this.k0,t.y/=this.k0,e=(s=Math.sqrt(t.x*t.x+t.y*t.y))?(h=Math.atan2(s,this.rc),i=Math.sin(h),a=Math.cos(h),n=Zt(a*this.sin_p14+t.y*i*this.cos_p14/s),e=Math.atan2(t.x*i,s*this.cos_p14*a-t.y*this.sin_p14*i),nt(this.long0+e)):(n=this.phic0,0),t.x=e,t.y=n,t},names:["gnom"]},ps={init:function(){this.sphere||(this.k0=ht(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))},forward:function(t){var s,i,a,h=t.x,e=t.y,n=nt(h-this.long0);return a=this.sphere?(i=this.x0+this.a*n*Math.cos(this.lat_ts),this.y0+this.a*Math.sin(e)/Math.cos(this.lat_ts)):(s=Vt(this.e,Math.sin(e)),i=this.x0+this.a*this.k0*n,this.y0+this.a*s*.5/this.k0),t.x=i,t.y=a,t},inverse:function(t){var s,i;return t.x-=this.x0,t.y-=this.y0,this.sphere?(s=nt(this.long0+t.x/this.a/Math.cos(this.lat_ts)),i=Math.asin(t.y/this.a*Math.cos(this.lat_ts))):(i=function(t,s){var i=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));if(Math.abs(Math.abs(s)-i)<1e-6)return s<0?-1*z:z;for(var a,h,e,n,r=Math.asin(.5*s),o=0;o<30;o++)if(h=Math.sin(r),e=Math.cos(r),n=t*h,r+=a=Math.pow(1-n*n,2)/(2*e)*(s/(1-t*t)-h/(1-n*n)+.5/t*Math.log((1-n)/(1+n))),Math.abs(a)<=1e-10)return r;return NaN}(this.e,2*t.y*this.k0/this.a),s=nt(this.long0+t.x/(this.a*this.k0))),t.x=s,t.y=i,t},names:["cea"]},ds={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Equidistant Cylindrical (Plate Carre)",this.rc=Math.cos(this.lat_ts)},forward:function(t){var s=t.x,i=t.y,a=nt(s-this.long0),h=Jt(i-this.lat0);return t.x=this.x0+this.a*a*this.rc,t.y=this.y0+this.a*h,t},inverse:function(t){var s=t.x,i=t.y;return t.x=nt(this.long0+(s-this.x0)/(this.a*this.rc)),t.y=Jt(this.lat0+(i-this.y0)/this.a),t},names:["Equirectangular","Equidistant_Cylindrical","eqc"]},ys={init:function(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Ft(this.es),this.e1=Qt(this.es),this.e2=Wt(this.es),this.e3=Xt(this.es),this.ml0=this.a*Ut(this.e0,this.e1,this.e2,this.e3,this.lat0)},forward:function(t){var s,i,a,h=t.x,e=t.y,n=nt(h-this.long0),r=n*Math.sin(e);return a=this.sphere?Math.abs(e)<=D?(i=this.a*n,-1*this.a*this.lat0):(i=this.a*Math.sin(r)/Math.tan(e),this.a*(Jt(e-this.lat0)+(1-Math.cos(r))/Math.tan(e))):Math.abs(e)<=D?(i=this.a*n,-1*this.ml0):(i=(s=Ht(this.a,this.e,Math.sin(e))/Math.tan(e))*Math.sin(r),this.a*Ut(this.e0,this.e1,this.e2,this.e3,e)-this.ml0+s*(1-Math.cos(r))),t.x=i+this.x0,t.y=a+this.y0,t},inverse:function(t){var s,i,a,h,e,n,r,o,l=t.x-this.x0,M=t.y-this.y0;if(this.sphere)if(Math.abs(M+this.a*this.lat0)<=D)s=nt(l/this.a+this.long0),i=0;else{for(var c,u=this.lat0+M/this.a,f=l*l/this.a/this.a+u*u,m=u,p=20;p;--p)if(m+=a=-1*(u*(m*(c=Math.tan(m))+1)-m-.5*(m*m+f)*c)/((m-u)/c-1),Math.abs(a)<=D){i=m;break}s=nt(this.long0+Math.asin(l*Math.tan(m)/this.a)/Math.sin(i))}else if(Math.abs(M+this.ml0)<=D)i=0,s=nt(this.long0+l/this.a);else{for(u=(this.ml0+M)/this.a,f=l*l/this.a/this.a+u*u,m=u,p=20;p;--p)if(o=this.e*Math.sin(m),h=Math.sqrt(1-o*o)*Math.tan(m),e=this.a*Ut(this.e0,this.e1,this.e2,this.e3,m),n=this.e0-2*this.e1*Math.cos(2*m)+4*this.e2*Math.cos(4*m)-6*this.e3*Math.cos(6*m),m-=a=(u*(h*(r=e/this.a)+1)-r-.5*h*(r*r+f))/(this.es*Math.sin(2*m)*(r*r+f-2*u*r)/(4*h)+(u-r)*(h*n-2/Math.sin(2*m))-n),Math.abs(a)<=D){i=m;break}h=Math.sqrt(1-this.es*Math.pow(Math.sin(i),2))*Math.tan(i),s=nt(this.long0+Math.asin(l*h/this.a)/Math.sin(i))}return t.x=s,t.y=i,t},names:["Polyconic","poly"]},_s={init:function(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013},forward:function(t){for(var s=t.x,i=t.y-this.lat0,a=s-this.long0,h=i/j*1e-5,e=a,n=1,r=0,o=1;o<=10;o++)n*=h,r+=this.A[o]*n;var l,M=r,c=e,u=1,f=0,m=0,p=0;for(o=1;o<=6;o++)l=f*M+u*c,u=u*M-f*c,f=l,m=m+this.B_re[o]*u-this.B_im[o]*f,p=p+this.B_im[o]*u+this.B_re[o]*f;return t.x=p*this.a+this.x0,t.y=m*this.a+this.y0,t},inverse:function(t){var s,i=t.x,a=t.y,h=i-this.x0,e=(a-this.y0)/this.a,n=h/this.a,r=1,o=0,l=0,M=0;for(y=1;y<=6;y++)s=o*e+r*n,r=r*e-o*n,o=s,l=l+this.C_re[y]*r-this.C_im[y]*o,M=M+this.C_im[y]*r+this.C_re[y]*o;for(var c=0;c<this.iterations;c++){for(var u,f=l,m=M,p=e,d=n,y=2;y<=6;y++)u=m*l+f*M,f=f*l-m*M,m=u,p+=(y-1)*(this.B_re[y]*f-this.B_im[y]*m),d+=(y-1)*(this.B_im[y]*f+this.B_re[y]*m);f=1,m=0;var _=this.B_re[1],x=this.B_im[1];for(y=2;y<=6;y++)u=m*l+f*M,f=f*l-m*M,m=u,_+=y*(this.B_re[y]*f-this.B_im[y]*m),x+=y*(this.B_im[y]*f+this.B_re[y]*m);var g=_*_+x*x,l=(p*_+d*x)/g,M=(d*_-p*x)/g}var b=l,v=M,w=1,C=0;for(y=1;y<=9;y++)w*=b,C+=this.D[y]*w;var P=this.lat0+C*j*1e5,S=this.long0+v;return t.x=S,t.y=P,t},names:["New_Zealand_Map_Grid","nzmg"]},xs={init:function(){},forward:function(t){var s=t.x,i=t.y,a=nt(s-this.long0),h=this.x0+this.a*a,e=this.y0+this.a*Math.log(Math.tan(Math.PI/4+i/2.5))*1.25;return t.x=h,t.y=e,t},inverse:function(t){t.x-=this.x0,t.y-=this.y0;var s=nt(this.long0+t.x/this.a),i=2.5*(Math.atan(Math.exp(.8*t.y/this.a))-Math.PI/4);return t.x=s,t.y=i,t},names:["Miller_Cylindrical","mill"]},gs={init:function(){this.sphere?(this.n=1,this.m=0,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)):this.en=At(this.es)},forward:function(t){var s=t.x,i=t.y,s=nt(s-this.long0);if(this.sphere){if(this.m)for(var a=this.n*Math.sin(i),h=20;h;--h){var e=(this.m*i+Math.sin(i)-a)/(this.m+Math.cos(i));if(i-=e,Math.abs(e)<D)break}else i=1!==this.n?Math.asin(this.n*Math.sin(i)):i;l=this.a*this.C_x*s*(this.m+Math.cos(i)),o=this.a*this.C_y*i}else var n=Math.sin(i),r=Math.cos(i),o=this.a*Gt(i,n,r,this.en),l=this.a*s*r/Math.sqrt(1-this.es*n*n);return t.x=l,t.y=o,t},inverse:function(t){var s,i,a,h;return t.x-=this.x0,a=t.x/this.a,t.y-=this.y0,s=t.y/this.a,this.sphere?(s/=this.C_y,a/=this.C_x*(this.m+Math.cos(s)),this.m?s=Zt((this.m*s+Math.sin(s))/this.n):1!==this.n&&(s=Zt(Math.sin(s)/this.n)),a=nt(a+this.long0),s=Jt(s)):(s=jt(t.y/this.a,this.es,this.en),(h=Math.abs(s))<z?(h=Math.sin(s),i=this.long0+t.x*Math.sqrt(1-this.es*h*h)/(this.a*Math.cos(s)),a=nt(i)):h-D<z&&(a=this.long0)),t.x=a,t.y=s,t},names:["Sinusoidal","sinu"]},bs={init:function(){},forward:function(t){for(var s=t.x,i=t.y,a=nt(s-this.long0),h=i,e=Math.PI*Math.sin(i);;){var n=-(h+Math.sin(h)-e)/(1+Math.cos(h));if(h+=n,Math.abs(n)<D)break}h/=2,Math.PI/2-Math.abs(i)<D&&(a=0);var r=.900316316158*this.a*a*Math.cos(h)+this.x0,o=1.4142135623731*this.a*Math.sin(h)+this.y0;return t.x=r,t.y=o,t},inverse:function(t){var s,i;t.x-=this.x0,t.y-=this.y0,i=t.y/(1.4142135623731*this.a),.999999999999<Math.abs(i)&&(i=.999999999999),s=Math.asin(i);var a=nt(this.long0+t.x/(.900316316158*this.a*Math.cos(s)));a<-Math.PI&&(a=-Math.PI),a>Math.PI&&(a=Math.PI),i=(2*s+Math.sin(2*s))/Math.PI,1<Math.abs(i)&&(i=1);var h=Math.asin(i);return t.x=a,t.y=h,t},names:["Mollweide","moll"]},vs={init:function(){Math.abs(this.lat1+this.lat2)<D||(this.lat2=this.lat2||this.lat1,this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Ft(this.es),this.e1=Qt(this.es),this.e2=Wt(this.es),this.e3=Xt(this.es),this.sinphi=Math.sin(this.lat1),this.cosphi=Math.cos(this.lat1),this.ms1=ht(this.e,this.sinphi,this.cosphi),this.ml1=Ut(this.e0,this.e1,this.e2,this.e3,this.lat1),Math.abs(this.lat1-this.lat2)<D?this.ns=this.sinphi:(this.sinphi=Math.sin(this.lat2),this.cosphi=Math.cos(this.lat2),this.ms2=ht(this.e,this.sinphi,this.cosphi),this.ml2=Ut(this.e0,this.e1,this.e2,this.e3,this.lat2),this.ns=(this.ms1-this.ms2)/(this.ml2-this.ml1)),this.g=this.ml1+this.ms1/this.ns,this.ml0=Ut(this.e0,this.e1,this.e2,this.e3,this.lat0),this.rh=this.a*(this.g-this.ml0))},forward:function(t){var s,i,a=t.x,h=t.y;i=this.sphere?this.a*(this.g-h):(s=Ut(this.e0,this.e1,this.e2,this.e3,h),this.a*(this.g-s));var e=this.ns*nt(a-this.long0),n=this.x0+i*Math.sin(e),r=this.y0+this.rh-i*Math.cos(e);return t.x=n,t.y=r,t},inverse:function(t){var s,i;t.x-=this.x0,t.y=this.rh-t.y+this.y0,s=0<=this.ns?(i=Math.sqrt(t.x*t.x+t.y*t.y),1):(i=-Math.sqrt(t.x*t.x+t.y*t.y),-1);var a=0;if(0!==i&&(a=Math.atan2(s*t.x,s*t.y)),this.sphere)return n=nt(this.long0+a/this.ns),e=Jt(this.g-i/this.a),t.x=n,t.y=e,t;var h=this.g-i/this.a,e=Kt(h,this.e0,this.e1,this.e2,this.e3),n=nt(this.long0+a/this.ns);return t.x=n,t.y=e,t},names:["Equidistant_Conic","eqdc"]},ws={init:function(){this.R=this.a},forward:function(t){var s,i=t.x,a=t.y,h=nt(i-this.long0);Math.abs(a)<=D&&(s=this.x0+this.R*h,d=this.y0);var e=Zt(2*Math.abs(a/Math.PI));(Math.abs(h)<=D||Math.abs(Math.abs(a)-z)<=D)&&(s=this.x0,d=0<=a?this.y0+Math.PI*this.R*Math.tan(.5*e):this.y0+Math.PI*this.R*-Math.tan(.5*e));var n=.5*Math.abs(Math.PI/h-h/Math.PI),r=n*n,o=Math.sin(e),l=Math.cos(e),M=l/(o+l-1),c=M*M,u=M*(2/o-1),f=u*u,m=Math.PI*this.R*(n*(M-f)+Math.sqrt(r*(M-f)*(M-f)-(f+r)*(c-f)))/(f+r);h<0&&(m=-m),s=this.x0+m;var p=r+M,m=Math.PI*this.R*(u*p-n*Math.sqrt((f+r)*(1+r)-p*p))/(f+r),d=0<=a?this.y0+m:this.y0-m;return t.x=s,t.y=d,t},inverse:function(t){var s,i,a,h,e,n,r,o,l,M,c,u;return t.x-=this.x0,t.y-=this.y0,c=Math.PI*this.R,e=(a=t.x/c)*a+(h=t.y/c)*h,c=3*(h*h/(o=-2*(n=-Math.abs(h)*(1+e))+1+2*h*h+e*e)+(2*(r=n-2*h*h+a*a)*r*r/o/o/o-9*n*r/o/o)/27)/(l=(n-r*r/3/o)/o)/(M=2*Math.sqrt(-l/3)),1<Math.abs(c)&&(c=0<=c?1:-1),u=Math.acos(c)/3,i=0<=t.y?(-M*Math.cos(u+Math.PI/3)-r/3/o)*Math.PI:-(-M*Math.cos(u+Math.PI/3)-r/3/o)*Math.PI,s=Math.abs(a)<D?this.long0:nt(this.long0+Math.PI*(e-1+Math.sqrt(1+2*(a*a-h*h)+e*e))/2/a),t.x=s,t.y=i,t},names:["Van_der_Grinten_I","VanDerGrinten","vandg"]},Cs={init:function(){this.sin_p12=Math.sin(this.lat0),this.cos_p12=Math.cos(this.lat0)},forward:function(t){var s,i,a,h,e,n,r,o,l,M,c,u,f,m,p,d,y,_,x,g,b,v,w=t.x,C=t.y,P=Math.sin(t.y),S=Math.cos(t.y),N=nt(w-this.long0);return this.sphere?Math.abs(this.sin_p12-1)<=D?(t.x=this.x0+this.a*(z-C)*Math.sin(N),t.y=this.y0-this.a*(z-C)*Math.cos(N)):Math.abs(this.sin_p12+1)<=D?(t.x=this.x0+this.a*(z+C)*Math.sin(N),t.y=this.y0+this.a*(z+C)*Math.cos(N)):(_=this.sin_p12*P+this.cos_p12*S*Math.cos(N),y=(d=Math.acos(_))?d/Math.sin(d):1,t.x=this.x0+this.a*y*S*Math.sin(N),t.y=this.y0+this.a*y*(this.cos_p12*P-this.sin_p12*S*Math.cos(N))):(s=Ft(this.es),i=Qt(this.es),a=Wt(this.es),h=Xt(this.es),Math.abs(this.sin_p12-1)<=D?(e=this.a*Ut(s,i,a,h,z),n=this.a*Ut(s,i,a,h,C),t.x=this.x0+(e-n)*Math.sin(N),t.y=this.y0-(e-n)*Math.cos(N)):Math.abs(this.sin_p12+1)<=D?(e=this.a*Ut(s,i,a,h,z),n=this.a*Ut(s,i,a,h,C),t.x=this.x0+(e+n)*Math.sin(N),t.y=this.y0+(e+n)*Math.cos(N)):(r=P/S,o=Ht(this.a,this.e,this.sin_p12),l=Ht(this.a,this.e,P),M=Math.atan((1-this.es)*r+this.es*o*this.sin_p12/(l*S)),x=0===(c=Math.atan2(Math.sin(N),this.cos_p12*Math.tan(M)-this.sin_p12*Math.cos(N)))?Math.asin(this.cos_p12*Math.sin(M)-this.sin_p12*Math.cos(M)):Math.abs(Math.abs(c)-Math.PI)<=D?-Math.asin(this.cos_p12*Math.sin(M)-this.sin_p12*Math.cos(M)):Math.asin(Math.sin(N)*Math.cos(M)/Math.sin(c)),u=this.e*this.sin_p12/Math.sqrt(1-this.es),d=o*x*(1-(g=x*x)*(p=(f=this.e*this.cos_p12*Math.cos(c)/Math.sqrt(1-this.es))*f)*(1-p)/6+(b=g*x)/8*(m=u*f)*(1-2*p)+(v=b*x)/120*(p*(4-7*p)-3*u*u*(1-7*p))-v*x/48*m),t.x=this.x0+d*Math.sin(c),t.y=this.y0+d*Math.cos(c))),t},inverse:function(t){var s,i,a,h,e,n,r,o,l,M,c,u,f,m,p,d,y,_,x,g,b,v,w;if(t.x-=this.x0,t.y-=this.y0,this.sphere){if((s=Math.sqrt(t.x*t.x+t.y*t.y))>2*z*this.a)return;return i=s/this.a,a=Math.sin(i),h=Math.cos(i),e=this.long0,Math.abs(s)<=D?n=this.lat0:(n=Zt(h*this.sin_p12+t.y*a*this.cos_p12/s),r=Math.abs(this.lat0)-z,e=nt(Math.abs(r)<=D?0<=this.lat0?this.long0+Math.atan2(t.x,-t.y):this.long0-Math.atan2(-t.x,t.y):this.long0+Math.atan2(t.x*a,s*this.cos_p12*h-t.y*this.sin_p12*a))),t.x=e,t.y=n,t}return o=Ft(this.es),l=Qt(this.es),M=Wt(this.es),c=Xt(this.es),Math.abs(this.sin_p12-1)<=D?(u=this.a*Ut(o,l,M,c,z),s=Math.sqrt(t.x*t.x+t.y*t.y),n=Kt((u-s)/this.a,o,l,M,c),e=nt(this.long0+Math.atan2(t.x,-1*t.y))):Math.abs(this.sin_p12+1)<=D?(u=this.a*Ut(o,l,M,c,z),s=Math.sqrt(t.x*t.x+t.y*t.y),n=Kt((s-u)/this.a,o,l,M,c),e=nt(this.long0+Math.atan2(t.x,t.y))):(s=Math.sqrt(t.x*t.x+t.y*t.y),p=Math.atan2(t.x,t.y),f=Ht(this.a,this.e,this.sin_p12),d=Math.cos(p),_=-(y=this.e*this.cos_p12*d)*y/(1-this.es),x=3*this.es*(1-_)*this.sin_p12*this.cos_p12*d/(1-this.es),v=1-_*(b=(g=s/f)-_*(1+_)*Math.pow(g,3)/6-x*(1+3*_)*Math.pow(g,4)/24)*b/2-g*b*b*b/6,m=Math.asin(this.sin_p12*Math.cos(b)+this.cos_p12*Math.sin(b)*d),e=nt(this.long0+Math.asin(Math.sin(p)*Math.sin(b)/Math.cos(m))),w=Math.sin(m),n=Math.atan2((w-this.es*v*this.sin_p12)*Math.tan(m),w*(1-this.es))),t.x=e,t.y=n,t},names:["Azimuthal_Equidistant","aeqd"]},Ps={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)},forward:function(t){var s,i,a,h=t.x,e=t.y,n=nt(h-this.long0),r=Math.sin(e),o=Math.cos(e),l=Math.cos(n);return(0<(s=this.sin_p14*r+this.cos_p14*o*l)||Math.abs(s)<=D)&&(i=this.a*o*Math.sin(n),a=this.y0+this.a*(this.cos_p14*r-this.sin_p14*o*l)),t.x=i,t.y=a,t},inverse:function(t){var s,i,a,h,e,n,r;return t.x-=this.x0,t.y-=this.y0,s=Math.sqrt(t.x*t.x+t.y*t.y),i=Zt(s/this.a),a=Math.sin(i),h=Math.cos(i),n=this.long0,Math.abs(s)<=D?r=this.lat0:(r=Zt(h*this.sin_p14+t.y*a*this.cos_p14/s),e=Math.abs(this.lat0)-z,n=Math.abs(e)<=D?nt(0<=this.lat0?this.long0+Math.atan2(t.x,-t.y):this.long0-Math.atan2(-t.x,t.y)):nt(this.long0+Math.atan2(t.x*a,s*this.cos_p14*h-t.y*this.sin_p14*a))),t.x=n,t.y=r,t},names:["ortho"]},Ss=1,Ns=2,ks=3,Es=4,qs=5,Is=6,Os=1,As=2,Gs=3,js=4,zs={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=z-U/2?this.face=qs:this.lat0<=-(z-U/2)?this.face=Is:Math.abs(this.long0)<=U?this.face=Ss:Math.abs(this.long0)<=z+U?this.face=0<this.long0?Ns:Es:this.face=ks,0!==this.es&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)},forward:function(t){var s,i,a,h,e,n,r,o,l,M,c,u,f={x:0,y:0},m={value:0};return t.x-=this.long0,s=0!==this.es?Math.atan(this.one_minus_f_squared*Math.tan(t.y)):t.y,i=t.x,this.face===qs?(h=z-s,a=U<=i&&i<=z+U?(m.value=Os,i-z):z+U<i||i<=-(z+U)?(m.value=As,0<i?i-Q:i+Q):-(z+U)<i&&i<=-U?(m.value=Gs,i+z):(m.value=js,i)):this.face===Is?(h=z+s,a=U<=i&&i<=z+U?(m.value=Os,z-i):i<U&&-U<=i?(m.value=As,-i):i<-U&&-(z+U)<=i?(m.value=Gs,-i-z):(m.value=js,0<i?Q-i:-i-Q)):(this.face===Ns?i=S(i,+z):this.face===ks?i=S(i,+Q):this.face===Es&&(i=S(i,-z)),M=Math.sin(s),c=Math.cos(s),u=Math.sin(i),r=c*Math.cos(i),o=c*u,l=M,this.face===Ss?a=P(h=Math.acos(r),l,o,m):this.face===Ns?a=P(h=Math.acos(o),l,-r,m):this.face===ks?a=P(h=Math.acos(-r),l,-o,m):this.face===Es?a=P(h=Math.acos(-o),l,r,m):(h=a=0,m.value=Os)),n=Math.atan(12/Q*(a+Math.acos(Math.sin(a)*Math.cos(U))-z)),e=Math.sqrt((1-Math.cos(h))/(Math.cos(n)*Math.cos(n))/(1-Math.cos(Math.atan(1/Math.cos(a))))),m.value===As?n+=z:m.value===Gs?n+=Q:m.value===js&&(n+=1.5*Q),f.x=e*Math.cos(n),f.y=e*Math.sin(n),f.x=f.x*this.a+this.x0,f.y=f.y*this.a+this.y0,t.x=f.x,t.y=f.y,t},inverse:function(t){var s,i,a,h,e,n,r,o,l,M,c,u,f,m,p,d={lam:0,phi:0},y={value:0};return t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,i=Math.atan(Math.sqrt(t.x*t.x+t.y*t.y)),s=Math.atan2(t.y,t.x),0<=t.x&&t.x>=Math.abs(t.y)?y.value=Os:0<=t.y&&t.y>=Math.abs(t.x)?(y.value=As,s-=z):t.x<0&&-t.x>=Math.abs(t.y)?(y.value=Gs,s=s<0?s+Q:s-Q):(y.value=js,s+=z),c=Q/12*Math.tan(s),e=Math.sin(c)/(Math.cos(c)-1/Math.sqrt(2)),n=Math.atan(e),(r=1-(a=Math.cos(s))*a*(h=Math.tan(i))*h*(1-Math.cos(Math.atan(1/Math.cos(n)))))<-1?r=-1:1<r&&(r=1),this.face===qs?(o=Math.acos(r),d.phi=z-o,y.value===Os?d.lam=n+z:y.value===As?d.lam=n<0?n+Q:n-Q:y.value===Gs?d.lam=n-z:d.lam=n):this.face===Is?(o=Math.acos(r),d.phi=o-z,y.value===Os?d.lam=z-n:y.value===As?d.lam=-n:y.value===Gs?d.lam=-n-z:d.lam=n<0?-n-Q:Q-n):(c=(l=r)*l,u=1<=(c+=(M=1<=c?0:Math.sqrt(1-c)*Math.sin(n))*M)?0:Math.sqrt(1-c),y.value===As?(c=u,u=-M,M=c):y.value===Gs?(u=-u,M=-M):y.value===js&&(c=u,u=M,M=-c),this.face===Ns?(c=l,l=-u,u=c):this.face===ks?(l=-l,u=-u):this.face===Es&&(c=l,l=u,u=-c),d.phi=Math.acos(-M)-z,d.lam=Math.atan2(u,l),this.face===Ns?d.lam=S(d.lam,-z):this.face===ks?d.lam=S(d.lam,-Q):this.face===Es&&(d.lam=S(d.lam,+z))),0!==this.es&&(f=d.phi<0?1:0,m=Math.tan(d.phi),p=this.b/Math.sqrt(m*m+this.one_minus_f_squared),d.phi=Math.atan(Math.sqrt(this.a*this.a-p*p)/(this.one_minus_f*p)),f&&(d.phi=-d.phi)),d.lam+=this.long0,t.x=d.lam,t.y=d.phi,t},names:["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube","qsc"]},Rs=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-9.86701e-7],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,1.8736e-8],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,9.34959e-7],[.7986,-.00755338,-500009e-10,9.35324e-7],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],Ls=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-1.26793e-9,4.22642e-10],[.124,.0124,5.07171e-9,-1.60604e-9],[.186,.0123999,-1.90189e-8,6.00152e-9],[.248,.0124002,7.10039e-8,-2.24e-8],[.31,.0123992,-2.64997e-7,8.35986e-8],[.372,.0124029,9.88983e-7,-3.11994e-7],[.434,.0123893,-369093e-11,-4.35621e-7],[.4958,.0123198,-102252e-10,-3.45523e-7],[.5571,.0121916,-154081e-10,-5.82288e-7],[.6176,.0119938,-241424e-10,-5.25327e-7],[.6769,.011713,-320223e-10,-5.16405e-7],[.7346,.0113541,-397684e-10,-6.09052e-7],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-1.40374e-9],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],Ts=B/5,Ds=1/Ts,Bs={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.es=0,this.title=this.title||"Robinson"},forward:function(t){var s=nt(t.x-this.long0),i=Math.abs(t.y),a=Math.floor(i*Ts);a<0?a=0:18<=a&&(a=17);var h={x:Yt(Rs[a],i=B*(i-Ds*a))*s,y:Yt(Ls[a],i)};return t.y<0&&(h.y=-h.y),h.x=h.x*this.a*.8487+this.x0,h.y=h.y*this.a*1.3523+this.y0,h},inverse:function(t){var a={x:(t.x-this.x0)/(.8487*this.a),y:Math.abs(t.y-this.y0)/(1.3523*this.a)};if(1<=a.y)a.x/=Rs[18][0],a.y=t.y<0?-z:z;else{var s=Math.floor(18*a.y);for(s<0?s=0:18<=s&&(s=17);;)if(Ls[s][0]>a.y)--s;else{if(!(Ls[s+1][0]<=a.y))break;++s}var h=Ls[s],i=function(t,s,i,a){for(var h=s;a;--a){var e=t(h);if(h-=e,Math.abs(e)<i)break}return h}(function(t){return(Yt(h,t)-a.y)/(i=t,(s=h)[1]+i*(2*s[2]+3*i*s[3]));var s,i},i=5*(a.y-h[0])/(Ls[s+1][0]-h[0]),D,100);a.x/=Yt(Rs[s],i),a.y=(5*s+i)*N,t.y<0&&(a.y=-a.y)}return a.x=nt(a.x+this.long0),a},names:["Robinson","robin"]},Us={init:function(){this.name="geocent"},forward:function(t){return M(t,this.es,this.a)},inverse:function(t){return c(t,this.es,this.a,this.b)},names:["Geocentric","geocentric","geocent","Geocent"]};return a.defaultDatum="WGS84",a.Proj=q,a.WGS84=new a.Proj("WGS84"),a.Point=C,a.toPoint=bt,a.defs=l,a.transform=f,a.mgrs=Ot,a.version="2.6.2",($t=a).Proj.projections.add(ss),$t.Proj.projections.add(is),$t.Proj.projections.add(as),$t.Proj.projections.add(es),$t.Proj.projections.add(ns),$t.Proj.projections.add(rs),$t.Proj.projections.add(os),$t.Proj.projections.add(ls),$t.Proj.projections.add(Ms),$t.Proj.projections.add(cs),$t.Proj.projections.add(us),$t.Proj.projections.add(fs),$t.Proj.projections.add(ms),$t.Proj.projections.add(ps),$t.Proj.projections.add(ds),$t.Proj.projections.add(ys),$t.Proj.projections.add(_s),$t.Proj.projections.add(xs),$t.Proj.projections.add(gs),$t.Proj.projections.add(bs),$t.Proj.projections.add(vs),$t.Proj.projections.add(ws),$t.Proj.projections.add(Cs),$t.Proj.projections.add(Ps),$t.Proj.projections.add(zs),$t.Proj.projections.add(Bs),$t.Proj.projections.add(Us),a}); \ No newline at end of file diff --git a/public/site_libs/rstudio_leaflet-1.3.1/images/1px.png b/public/site_libs/rstudio_leaflet-1.3.1/images/1px.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 Binary files /dev/null and b/public/site_libs/rstudio_leaflet-1.3.1/images/1px.png differ diff --git a/public/site_libs/rstudio_leaflet-1.3.1/rstudio_leaflet.css b/public/site_libs/rstudio_leaflet-1.3.1/rstudio_leaflet.css new file mode 100644 index 0000000000000000000000000000000000000000..c10d2f1134c71ec55df78759e1467aeb69c2cb37 --- /dev/null +++ b/public/site_libs/rstudio_leaflet-1.3.1/rstudio_leaflet.css @@ -0,0 +1,41 @@ +.leaflet-tooltip.leaflet-tooltip-text-only, +.leaflet-tooltip.leaflet-tooltip-text-only:before, +.leaflet-tooltip.leaflet-tooltip-text-only:after { + background: none; + border: none; + box-shadow: none; +} + +.leaflet-tooltip.leaflet-tooltip-text-only.leaflet-tooltip-left { + margin-left: 5px; +} + +.leaflet-tooltip.leaflet-tooltip-text-only.leaflet-tooltip-right { + margin-left: -5px; +} + +.leaflet-tooltip:after { + border-right: 6px solid transparent; + /* right: -16px; */ +} + +.leaflet-popup-pane .leaflet-popup-tip-container { + /* when the tooltip container is clicked, it is closed */ + pointer-events: all; + /* tooltips should display the "hand" icon, just like .leaflet-interactive*/ + cursor: pointer; +} + +/* have the widget be displayed in the right 'layer' */ +.leaflet-map-pane { + z-index: auto; +} + +/* Add missing rule from leaflet for img. +This complete existing leaflet.css. +Fix for https://github.com/rstudio/rmarkdown/issues/1949 */ +.leaflet-container .leaflet-right-pane img, +.leaflet-container .leaflet-left-pane img { + max-width: none !important; + max-height: none !important; +} diff --git a/references.bib b/references.bib index 94df4dc7dfc0e89874606349f2e506a7527ee72b..1433f18604595ddb446dc0ed62461fe0ebbb7baa 100644 --- a/references.bib +++ b/references.bib @@ -241,4 +241,12 @@ Library}, organization = {Open Source Geospatial Foundation}, year = {2021}, url = {https://proj.org/}, -} \ No newline at end of file +} +@article{leaflet, + title = {leaflet: Create Interactive Web Maps with the JavaScript 'Leaflet' +Library}, + author = {Cheng, Joe and Karambelkar, Bhaskar and Xie, Yihui}, + year = {2022}, + date = {2022}, + url = {https://CRAN.R-project.org/package=leaflet} +}