From 99ebb3d36fc9ac7d224271e40dbe6dee61ce8661 Mon Sep 17 00:00:00 2001 From: "Genova, Giulio" <giulio.genova@wur.nl> Date: Wed, 30 Aug 2023 11:52:47 +0000 Subject: [PATCH] Rscripts --- README.md | 388 +++++++++++++++++++++++++++++++++ images/r_q1_result.png | Bin 0 -> 33295 bytes images/r_q2_result.png | Bin 0 -> 24955 bytes scripts/r/wosis_gelderland.csv | 137 ++++++++++++ scripts/r/wosis_graphql_q1.R | 11 +- scripts/r/wosis_graphql_q2.R | 82 ++++--- scripts/r/wosis_graphql_q3.R | 69 ++++++ 7 files changed, 636 insertions(+), 51 deletions(-) create mode 100644 images/r_q1_result.png create mode 100644 images/r_q2_result.png create mode 100644 scripts/r/wosis_gelderland.csv create mode 100644 scripts/r/wosis_graphql_q3.R diff --git a/README.md b/README.md index 535a1e4..d631613 100644 --- a/README.md +++ b/README.md @@ -954,5 +954,393 @@ CSV result file can be found [here](./scripts/python/wosis_gelderland.csv) ### R examples +The simplest way to perform a graphQL request in r is to use {httr}. + +- Get the fist 5 profiles and add it to a Pandas dataframe: + +```r +library(httr) +library(jsonlite) + +# GraphQL query +query <- ' +query MyQuery { + wosisLatestProfiles(first: 5) { + continent + region + countryName + datasetCode + latitude + longitude + geomAccuracy + profileCode + } +} +' + +# GraphQL endpoint +url <- 'https://graphql.isric.org/wosis/graphql' + +# Send POST request +response <- POST(url, body = list(query = query), encode = "json") + +# Print status_code +print(status_code(response)) + +# Parse JSON +parsed <- fromJSON(content(response, "text"), flatten = TRUE) + +## convert the from json to dataframe object +df <- as.data.frame(parsed$data$wosisLatestProfiles) + +head(df) +``` + +The result will be: + + + +Using variables in our script: + +- Get the __first 3 profiles__ that are __inside Gelderland region__ and add it to a Pandas dataframe: + +```r +library(httr) +library(jsonlite) + +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + + +# GraphQL query +query <- " +query MyQuery($geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: 3 + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { + continent + region + profileId + datasetCode + latitude + longitude + geom { + geojson + x + y + } + } +} +" + +# GraphQL endpoint +url <- "https://graphql.isric.org/wosis/graphql" + +# Send POST request +response <- POST(url, body = list(query = query, variables = list(geomGelderland = geomGelderland)), encode = "json") + +# Print status_code +print(status_code(response)) + +# Parse JSON +parsed <- fromJSON(content(response, "text"), flatten = TRUE) + +# Convert to data frame +df <- as.data.frame(parsed$data$wosisLatestProfiles) + +# Print data frame +print(df) + +``` + +The result will be: + + + +- Get __all WoSIS profiles with layers that exist in Gelderland__ and also __export it to CSV__. + + +```r +library(httr) +library(jsonlite) +library(dplyr) + +# GeoJSON geometry +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + +# GraphQL query +query <- " +query MyQuery($first: Int, $offset: Int, $geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: $first, + offset: $offset, + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { + continent + region + profileId + datasetCode + latitude + longitude + } +} +" + +# GraphQL endpoint +url <- "https://graphql.isric.org/wosis/graphql" + +new_results <- TRUE +first <- 100 +offset <- 0 +all_results <- list() + +while (new_results) { + # Send POST request + response <- POST(url, body = list(query = query, variables = list( + first = first, + offset = offset, geomGelderland = geomGelderland + )), encode = "json") + # Parse JSON + parsed <- fromJSON(content(response, "text"), flatten = TRUE) + # Add results to all_results list + all_results <- append(all_results, list(parsed$data$wosisLatestProfiles)) + + if (!"wosisLatestProfiles" %in% names(parsed$data) || length(parsed$data$wosisLatestProfiles) == 0) { + print("No more results") + # update new_results + new_results <- FALSE + } else { + print("We have more results") + # update offset + offset <- offset + first + } +} + +df <- bind_rows(all_results) %>% as_tibble() +# print dataframe +cat("There are", nrow(df), "WoSIS profiles with layers inside Gelderland region\n") +# Export dataframe to CSV +write.csv(df, "wosis_gelderland.csv", row.names = FALSE, quote = FALSE) + + +``` +The result will be: + +`There are 136 WoSIS profiles with layers inside Gelderland region` + +CSV result file can be found [here](./scripts/r/wosis_gelderland.csv) + +The simplest way to perform a graphQL request in r is to use {httr}. + +- Get the fist 5 profiles and add it to a Pandas dataframe: + +```r +library(httr) +library(jsonlite) + +# GraphQL query +query <- ' +query MyQuery { + wosisLatestProfiles(first: 5) { + continent + region + countryName + datasetCode + latitude + longitude + geomAccuracy + profileCode + } +} +' + +# GraphQL endpoint +url <- 'https://graphql.isric.org/wosis/graphql' + +# Send POST request +response <- POST(url, body = list(query = query), encode = "json") + +# Print status_code +print(status_code(response)) + +# Parse JSON +parsed <- fromJSON(content(response, "text"), flatten = TRUE) + +## convert the from json to dataframe object +df <- as.data.frame(parsed$data$wosisLatestProfiles) + +head(df) +``` + +The result will be: + + + +Using variables in our script: + +- Get the __first 3 profiles__ that are __inside Gelderland region__ and add it to a Pandas dataframe: + +```r +library(httr) +library(jsonlite) + +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + + +# GraphQL query +query <- " +query MyQuery($geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: 3 + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { + continent + region + profileId + datasetCode + latitude + longitude + geom { + geojson + x + y + } + } +} +" + +# GraphQL endpoint +url <- "https://graphql.isric.org/wosis/graphql" + +# Send POST request +response <- POST(url, body = list(query = query, variables = list(geomGelderland = geomGelderland)), encode = "json") + +# Print status_code +print(status_code(response)) + +# Parse JSON +parsed <- fromJSON(content(response, "text"), flatten = TRUE) + +# Convert to data frame +df <- as.data.frame(parsed$data$wosisLatestProfiles) + +# Print data frame +print(df) + +``` + +The result will be: + + + +- Get __all WoSIS profiles with layers that exist in Gelderland__ and also __export it to CSV__. + + +```r +library(httr) +library(jsonlite) +library(dplyr) + +# GeoJSON geometry +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + +# GraphQL query +query <- " +query MyQuery($first: Int, $offset: Int, $geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: $first, + offset: $offset, + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { + continent + region + profileId + datasetCode + latitude + longitude + } +} +" + +# GraphQL endpoint +url <- "https://graphql.isric.org/wosis/graphql" + +new_results <- TRUE +first <- 100 +offset <- 0 +all_results <- list() + +while (new_results) { + # Send POST request + response <- POST(url, body = list(query = query, variables = list( + first = first, + offset = offset, geomGelderland = geomGelderland + )), encode = "json") + # Parse JSON + parsed <- fromJSON(content(response, "text"), flatten = TRUE) + # Add results to all_results list + all_results <- append(all_results, list(parsed$data$wosisLatestProfiles)) + + if (!"wosisLatestProfiles" %in% names(parsed$data) || length(parsed$data$wosisLatestProfiles) == 0) { + print("No more results") + # update new_results + new_results <- FALSE + } else { + print("We have more results") + # update offset + offset <- offset + first + } +} + +df <- bind_rows(all_results) %>% as_tibble() +# print dataframe +cat("There are", nrow(df), "WoSIS profiles with layers inside Gelderland region\n") +# Export dataframe to CSV +write.csv(df, "wosis_gelderland.csv", row.names = FALSE, quote = FALSE) + + +``` +The result will be: + +`There are 136 WoSIS profiles with layers inside Gelderland region` + +CSV result file can be found [here](./scripts/r/wosis_gelderland.csv) + ---------- diff --git a/images/r_q1_result.png b/images/r_q1_result.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e7353803be4d207e0d3ce169c0504468a090a3 GIT binary patch literal 33295 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%0AKLVmuIjk$lNRh87d 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 V+}kf{$H2hA;OXk;vd$@?2>?^Nc*Ot! literal 0 HcmV?d00001 diff --git a/images/r_q2_result.png b/images/r_q2_result.png new file mode 100644 index 0000000000000000000000000000000000000000..baf52c7c281a4c3523e5d820090dd64f39b40b60 GIT binary patch literal 24955 zcmeAS@N?(olHy`uVBq!ia0y~yU@B!`U})oDV_;y|omX>;fq{Xg*vT`5gM)*kh9jke zfq_A?#5JNMI6tkVJh3R1Aw4fYH&wSdxhOR?uQ(&W<UR9#I|c>@O^_nzqSVBa%=|os zkj&gvhVaxB1!DsR$I^5KBLgF21w$h%LlY|#3xxn*lNEy13=9eko-U3d6?5L~_0N#@ z{QcwS&v*GtyGsh<mn3Fx_R!g)UprCn)WKah#95O+OUtNrn4d@qIB}zAqi2DD+2hgz zgJiWEPh4jzDjig7J}K}}T-tb7g!oT^*frjpcfa%QK3Y3bFIVjKC99h659&YJm)@TA z`S@jd1I1PAmd~$xRk>=_>eZ|Nz25zP-|zf?j4o>TCL5&v)LgtRe1pY_{Qa#b`<I;v zy{&!gAQb5RKm7XZzxnY|o#z|>)&Jf9r~m)i?qBt<bEn?^xc|TWj;W>B{?Grver=Jg z3<Rt@RR1?P?G=P0Ba>(R|Mc{*15ncrE-annIJX%B4(mRUH(XKds`g`pmFJPKOHB)Z zNbUUk@1mgM&)d;q=4Ll;{5at9qQp^OufAjBcj=rQnLlTb+L*6jKI6gntKmFd@f!bg zm#_Wyv*zE&n~y$AZ|xVozwEEfy3^b3SG?{p-2Q7?;>%CouS8pu92Z9XugQ{4cD8TV zKP~>X|GdM4xTYEDvv0QBU$|aA|L3KbO>r^*gu3~Ey?E`tF>}WCUHK`W4i_#j`(%Dx z{LTGypO-$q{OI302mZsw`#;x}HuqlT-}5)ODdNHBRTYM7f3shx`u%t5>-RyoQs$d| z$h~#`;jTaH<D(kSJ6Rro^k{n6p@*xVPW#;+FW?Za5t=O?U*P;S+(@(T+%CanVVmxZ zCCfKwENiUll;TSlNVb_T?HFSJDXmIQ);@NkoXbJhr_sMyiUhaY*yYO{ului&R}=7D zXt$@@<2w_rKPChO+Hc(RVb-IE^YZQ<F6MDn{gXGjD@<v2oI?4Hgs*4TOftECLMYMU z+vAn5Med#1v?G-DzQX!@yn;4+`u`L)?`F_g@_(w*cJ_4_B;L>auEa27{*1p5kFH!k zb=jx>CwzXBWF`o*ny0y{&W}_mUQx69mt}-9@BUQ18Oi$uRO<Ad0vMblA3ADro2-{_ z_;>PtXS;Rb^|Bi=mnS}U{Iqy+N@@202C+Yv**5MBee_K2_B?~ci_NRU)TaNN`t(v~ zam3X9JL{x-+WS>(lan7yZt#CNo&C)8SKChIyBhz#zAE)ps6vv{UN_fJ%dOr^+!xj7 zyxCF5H9P!H-U+38ca@VBHckN|0tPEHTsOVs*;#Zptj6qY{fUi#_il*47<m1X&-(dO zJ_Y^0v7=sPp2NDozW2X;dKj8|%Ijl@<m{{aWq(H<_1E5#^?%vFOy&CXXS7b<()s?} zyPfOn=i9p(uUzR*xuTyhpRu=gXW8#E?>FhL#=mb|e81^eVe7F9b3vEutSW``lg#?H z#nj(ijHsTN6uB|OBi88f`m_mCGwZ6>%KQ<LNO|{^;p)%%Gxg)@8wxhBkGI}6b4K+s z*-uO6+dTRBLPy&=&*h;)q}RW56(U@p{VObfHEo@B=EUbhC*Jkxdmb9>i|JzjzF&PS z=f#N&o3}Dv)mdCy`{l28Z&KKg-=6Zdwd|Mgx-&1U%ACkvTl?qyO{U+|S5&O5Q84(? zb&^s4_RCB+`Mys{x${pP5$SB`{bTl}ctd-%jEdg-2|s_b|N6Br{a-%shIR8V+^Cjg zEe%^HZ)`RD@NMCxmur=-pR$ko<X^4o%yD{#wtq#ze>?x{3TB3W{_T4|MZcUr-|oZC zoBqFN%&)WkvVZdR^<|G1OM>vkiJEe(rPG4@CFh=f+&6FC{IJi}tm41Y+J34pwvm~e z<~rTOPF^v^*lzYScB`b~_HXh}A07@2dTF|)ZQGuewL0(hg(vO}+4gz*wEL_6t$lMj z>u==6RexvyN|(NMT|akz*zM`lZf%cFu-9JmCVA=n)V~$68QS|d1QZGPx(7U;KOyYT zk)(&kyXGujHz6`+@jdHfHx?fFQ6aN%!-Y!?e0dcC>fi1u`!s&ZnU=KED>VFORGi9c zrW0RWtXDp{q%-|gNNMZWR#6fEmWabndBJBt{wjFpbXNSrUB)G5dPnwz?9)E7mr?%J zC7si*qI*{@Ub8>JSGe;F+nUeTTLfGCyI*Tmv)eA)6uN1he7O0>4tCYqX|WeCUbT6- zrs?lh-T5c&r+$6>r|O;Z(Oo_|w+g>4`uueJ%KN>E#&&w=@B5xl{QD$CHumhqxSdXa zZ=6{FJZ^HN{-P<Rt9E(SX|_L`$ic2ZwTf%?pQiQ9JiSjR`E6YltoJnX+{)Zd{rrv$ z&g)}}8eRWJ-&`L0H|N5tzxh-2^X7})o<8mNcCnw2zHPp?er2uB*Uf?UZZmV2`eg3z z%3P6h)u=1zpf1O@kTt7MpII;Aa_qQA&);(m+Q*Z2T`9Vl|K;myjm`z@WB+&^SHASp z@Z!}rw`~9P>jjrZzZ|}H@Xv}&lO^wG&)88I|1k4jm-o}(%^gkCAN+{V>6w3SbG&H7 zr}T^G8PBXbb?s(pMA+BI{Ey0|-(;x!+nV|=PrAju<NV|KYHmvv>-V<gHRzNvsaM5E z)Xn~NSHkS^;>f!Fw-em+SIGb6`kJh~U;Bddr;7^ZOZ-|MTNz%+z1AQ4uSl_7s`|*Q zXinFw7pCY=D?YWcPWR?<uGPQvqi;N4_H}XT@B12I|2{8$eSTGK=GNNmsrtG0yMM)| z$!q_$`S<MWVul%4UMI{_o56nAb#om1^uPKCzq|<!JG9#7)!Gf;QaD#{-&VHcqiN~c z$KOxaiKcW$K74<re^1`$!i{|4NA?`?pLMlgWBcP{xf3qRT;Iu1IKO}9=~MrgK3;zH zhrz;o5iQ=QEBF3!4pzQ%aoUXfInFDu9TZM}S9@n$#pyp!OM|{&pSb%sXX{}Xq2eQp zGT$vPYX7w*VSbh9VTQmjmn{z1_qOg`^QQXn+vwHb@~0MGvy_gAzhM_|Q>Xjm*W2q# zXTN+tvZL&8%+rNSm7S(@C<yRyE!ej2-Uqk%{jXN_X}0OdC5K$TxwcYJ_5aCyS*5v6 zoeN{XoqEXh>VWT=zEG2r;04~_wyHf}_T~5T<WPIj-Y(4xk~Wo7UvhT+czexx_n*z0 zd3%x$@74%!S#W;IqW5*GzZf-UsO^YJZ`yJ7hs7HC`R`rUoz^!y^J2@4{fp&24Sr0C zwU-EBU}64o?$mxAySLBSr>rfVCca$Kx1LGUsh|D#x1C#R12nXL|2TZH`*Y;g{Zngi zUELS^On&XH`+B~guKW7gn{xgOe)@mWw@lNz=-m5#KVH2p_XXwc_}RC^=f8h5X%=(U zF?Wua-b?Cq71h)vc(&{-d6vdrI$Qpx+MyFy6ec$C&)0WYVejd~6mUYk?Bj7aj~17j zMLz#MWOjzBgzq{evm|n1&}W6x_FJoK_8vJtr_aLTXheU{3t`R^cfauaPug>8*3#LR z-p}s~{d;Bm3DIniX5}L)^7|ajPdfhO;t$OI<geYteCEsPj(rSwl{u9(o^Y3movKs& z%iwCx>Bc_cXj|J!x0;F?My5$E8aoa?J*e;L(RkQx%Rbk2A<l9V7GjnL634Q`HCO*J zmEEg$LDVv4|Ko`sDvN%cKebcGF82xlkx44aicI_XtZIbzUQ~#4R*&DDK7ZMF_AYI0 zjd>FJ=|Ux^8JU7Q<{e?_oWOnh*Y-{RyKkB6ee4f=n?GIcr)lWnyH}mRFO0Hn=KcQv z5;zp|?(_X*dsD8v=1ua-_}{m#znd9)Z*R5Rn=?E7-pp6l%uErx7P#%1=X91wkJp}0 zx&P+%^}V{!f+xsy8h<L{U~G>4Dy-ce|8(`t`4I(Y4NX3FRmT}@QOZxdEV6!6f9PJ9 zvXuvpTo92iziU!A$@WK9^TM{y2`m5SFf6F8IrC!E*IA1{ebTtRl~d@WXWY-d2_YA@ z=Guj=4_N8@r8t9k^)JoTv`8swWy9}%DY@-uw=(ViDBQl`Q~$Of>A^ld{<B|{AFKF! zqCYY)Vs`w7x6*50rJLJrGm?DgqcZd7W4U*1|F>@1KW9$zt8;<I@6(?=m32`3>)aK? z>-91+?AWo2|A_)wp=H~)uVgu2`g{5%llr|!E*+9O@AmA6!0KRQEsfWeQy$Emx!(Kn zWvlw!`_2Y-=VF2moVF8P>rqwq(&BE|?~7|{FI=DLd)326>dD13wk+THw}ooRJlVdg zUi<g9rL~WZ{%2hMXZClq=fA9Pn%bYD-R{*s2wZxm?47Xn!^!%>``6S)_1_P>y*>YE z-SwlV?81JTuAU#(zI5FI1z~5UQ-{t!;lIB_>~bd8`ei?Aca-cod$RP$`uF>OzuO;u z<@~{iw;kjj|Lr+&srhB|%_;gmIeAknQfIMuU*}I?XJ==BusZwxKC6F<-+q4U=PWMR z(c@tL_pVS<J9l{dnFO0AZ_PWe8p;X^ezZT>l7IGR`>p5m3w>rBwin($-}<9F&rjAn z5*fE6<8<Qo&0O8w+<e%)`SL!~=ki(d&%c8BpqBVy-2;_>Up;_;0`7vi{Z<wh7F*^D zB)^}3xq3(A-bw!&L*7l(e^yvf@Z*t*{1w)u9^S7Ctj#4{c~e^DJ!)N7^XyI!s}!@_ zZ+!mT?D~%-f2Hpk9}!J@^jBox)b{76AHGWaw7&4pOLm{_i}kFM&g_*=`L2EE=kIIR z@^^0#oL`jG_AqXyU%#iT?u5t+-;Yhcr=LFDe&+7i`I~Yz3=ao{IDM%uoZWs~aH(<5 z%hJ~+{yjVQyIIt)Yd`tzQ04u-FaGHkmeeOtj+fIb+OqY^hugeQ4xRtACB{vv?)2#o zX0`VF@?M5DuMd+H>NVbdd3r?6h2u&_$?wz8y+2=eBwVIGtmW9f&wIXq*%)%{nZ8Yg zjm`c|SN|OrSG1h8!2R8k({{VF<~?ma)A_$Dh3)txo)eBN>pM5D4v6rZoLNv1uX501 zk9efWfi(-nje7R!ZS$>LZE|%z@6Xvww@1|%{g?O{F{2^=KzHM^oK2JB@>c(q`5iO& zS+mu4ZY{2zO>QNB^1RJ=8E!GH^Axu*T-v#+?y+p$-j*=dmy48}SnTU~%D${mFQ{F7 z=h&}Yaj}mtyU!Y0UT`#=`>0h-Kw2_6Y1OIki*E*BuXIZ0DZhHdwpy!iVQ|FBg`vE! z)+yX|=A3u-z`e)U+0#YLyw^XC_z`Jc>eLb~m!y^#bi?lL?&<gT%W?>^Dam;~=R2P( zysu8luJvq^fTdRBuioA>QAh6lJW;Z&qGG|M&P<ax|8FM!H?%Ny?C}+w=d)NzNLDI6 z>C}_o7gHIOk|*=9ie9?BxyH!m#7E9!>S`-&>P}UO#(Xj;77pw=oBGUH%5*w^;EJuj zb*m#@UeBtt{uI4({{>n5seicYv#qM%G5kHLxGe3?m%mdOqqfgap8xt{O~CSXn^!Qc z%RBVAeEq)Yug?#x3D~tn@$Jk=)yUaT|NVJ*V%OsN_wVs8SXQS}Ji}G0?sSa7@ft;s zKXEM!7}_=+YQExl{JO2p@qmy+@6Gtl{`u%n(3ZFPcKlgb=j_=z)rVSK`PW6wjQJHl z&0D>hud-m$lZGCR9fsOkKhHF+ow#G&Y>p=WfKH#91g%AzJ|xWA6YsLXD{{N~|A>11 zH{m5$wwhdit@VSg@@rnl;<XY_r%TK1c>40}#I;Y%H^-kpqvcuLt0TykVn1(}-@~&y z-O=G6ZbV1z&poJQx7bj!YqQQX{+@{^MLPEM80w_@r?uJ$y16xpJhxXmXS?|0&MjN! zEi5TAF1urNaiyM$y~eK6s;z4-WpvJ~U?{fs-B;*y@5w*i<ae7FhfQRwO32<jcT)e$ z4i~}GmCv}<)(Z(9c(&l3@satVRTy2QPoiuGOl6;LYRu98>+Wtpaly%N>m|3HDqY}Z zw%P4VXisA1%<Ebw7EM3(&1&c2&qmwBKHYgOyF~j%(%z`$=J&dHTb#ap-92vAqAh{Y zB%XURf8oDr!7JPTYrff$@~=v5vOr>F{@uF1+I8)p7qUDMWA8j|ol^I&ao@i8Gyg|3 zJ7DST%zHeCBT=&WDJTEC`_ErW9Z@^>($a=c1#35Et6$Ypt~z_W=^ZLfnOz=^AAYdd zY~`vt8&&6?^Df|jpq!nI>eM)A>rYd&rd`};_v_zOH$&||f0y*{+h_Odm!Fl$?qBg~ z_6+$JJ^Irh9sK*=GuNpk<;A1T4fzw+Z>-Cg2{)g_k(&DaiMg+%@n4pulRszeIzFkR zl{IY3v)+!?$`1McJ=ZVnc=5t{bxF<NBTuZ3-gz0WUiQ8|cGc``jijC@yjM@owRT)} zn=5o_hgOScN15nvn~&FZ?rQJ2U~YWIUh?U~7be=fTt5Be2)8_XQdj-whFzy#wQt`u zOU7m2kB-x;i*GnzlfHY%#PDvNRWm!|u2?gHCwWfpA0>Dn8;jU!mKL~ju=<pl*eCDb z`}A--|DIY?&qpsFg+1NgHMMT-v+bJu=YD-&R()_y;9dJ4_1@o#-xTNW`|B8cUD?dc zOzPh~Bc0gLjzh<fmQLBroU9eC>aa}xmZ$3Uw4EW#R%x%%U$dY>>4;RcZR*_X?Z)P? z?h4~Nf$wZJE4(-Bh=+bz)wk(ilc}%DrR=+hL$+`&Q&8Ha+SKH=kmX<l|NIxtU2RFu z`yRYza8BO2BzWzsDc+USip|o6)-Cz(`px=4Nb&J+fuC7R${9}P9cSOZtu9}tzu|$| z&HL+>RqLN0zHO*9&o;~S0|)!(#C`K5<$iMa=uO|bMzRnzI<)a%{l7ovCl?%Y((-+L zu|4diI}2M<i6pC-w9wl-`%|-Ai(JhwHcDGm?^JdRS+yYNb-?M(Yr9*N!wcW3ZPENU zYw7Eq*Hf-_YoyLywQf@UsfCp)ha7VP@5Vhod&ovVNHfjYH7nNnj1TX&fER8LU#}3= zUl{S`$8rxFw+YSc(G8dWFdJ3PSZU9HtF4~j;oJ1eZCMS++aHt)%XK_Fr$5PSufpnX z9v>U!XW7kv!Zu!7fAx>qlkHpo*%);?axVVx@yEg?s=qD2?KHdp@A~@m>oGG;uY9`d zG9&cs9z|QFxpKm>xiiXcT)t^~r-b$IhNaA)?$O>jCvyie>x1$xB70bl|4&N(v*pF# zRSYKKo7TOSn5Xw=QfG$7nw-NS5r_JxM}=-z-5+ye;W4?5zrvgXO-)j}pUyeU`9}Li z{ldR}mwMQKzX5mGp4y(#U3>q0duQgGL<!TZUS;+8o{x(1tv7Ej+xhxvWsrUS5#5rD z!u^wFIw$(Cz3s<-K-E~_>*CyJ>uUaAGt^uwdSkxyg58f_tzByKXWq`;?fR`}bL;*l z&RXkiU3Ey1$#m+}!>jZ(Mcb4FPo(LKm5JUGsXu!uwoz_UKif{_QnNL+CKqy#E#Eiw zX+`VARg12%{F~7=amuFSr{$v(Q|mYjlRA2P-4EF9ZnZhuCI4}Q&ZP(WN1CO)_n%oL z5x0x2&C_Q7f={2hw=on1-;PWAx8ba|{u+U*|2^|O*mr*2d+o{g)X4nezfq^+H%z;K z?pL?3kHFfs1@#}FG%hLyg+1T>e+$-~oVB|6^*a6RHD^wTWkj#PQ#N<<OS_%Dk(Qrb z?}%O~UF9-ik=})E7ee@tCCmso+Z=eMalzI<pR88?etqKZ-<Cs(N}ZNT7frqg@ANjB zb8y|i>9^MN-nsT`Z)O%-+sk9GzXqIJ_Cu3<$F7&(9nKmQusVA<sed~C-{8WG_ZR1{ zal8NF@8!vjkvn7BiX=me1^*bIb5S{7voX*5uJB9sM;9Yb&ebv6cj|BSvOPZQ{xmkm z$<O+Fb@`1*&yPPMrq+IGYb?~zdMLW*OzxL?e=^)&d{4c-X~MqTkL8}fE?nU#-=g|V z{&~Qv_IREB{qg?c3zlVua6A-_xzM)r`m9;0zmDt7<CEXI_tnGc{|$K#Gx+m=tPs%s z+wk?$L5($Y&MEA#Kesn-;#$+@S)6V6Hf-3t&volJo{Rbn)oV|le<hw#Gxbp9>+3=P zvQO;K`}@^rpSq$*#l)<N8JSn>`f77d+n?V4|JPQ|(#e<iZhBz<)if?R%WAi&{-P@z zBpus5mM0|1=t~tn7L~pix<iSjR!y{4TuW+~<^|Q;Gqv}5{IuDnD8TpoqG)fGtK;`J z&fmTzcXv#xNzI=7^k}Br<@pX>7anJNtdXDc_|BWi)xYZ5_PzYIH}h5W3M-Z;>n7iC zGIA_u^}V||uIAv2$H#5#e*ON*+r@b+s_Wv<H20S~KAOZ9m)hA@nfFAWoGbMr=KsIz z%Kx`FN$mE1F8cZE_mYyoFV-(ySY9eT^^QjVJd-Jjjs9B|$`AE&=Zp9V$E@@2`L^`Y zdU$vD0wW9akEkC~=R|oPEqA-R<5$DE=euh*2Iam#P-wMi?}-;0Uc51KHq&3c`m|%g zzSb~C$DEG*aF+S(S)z+ef37WJ{riCFcf`~Ei)wbnfx=PsrTzz{sg9X*c=JFZxvux= z0zV!P4@Y~s1FCEjmoOw9Pmg<fk7xV*2`Y-R|L49~zEbMlI=Nl^uXm>#RQ;?Ae2%5x zdwoZShQ$G&{XH+ZFW62}XmZ-Of&HtHe6iJ|2O`O~MvMGa6v{8#+jw4j=9RMdm7Bn~ zi(90wcx&uxh+h$O@%6SR>`9)JHVQDtv&-6b-pdeJzi__Yg&S)ER#r~fb$*RyR`b8y zhho?Btuw^tx6Waj$dYU;l%(KfB<Xsg=(w@Hdb6l(?D|doGp5FV$>OyUoHW_<*KXw# zn_6T#4Q)i1XU8vGaAob~eo+|}wV65j^X^BldinRZ&)OY+7j>2AmkMm3J}>y6s-VEy zaOd5J$|u~Fn$PvhQ}R?Lm$h2Zmvbw#MenLe$U5xvcsIRk|E#_^;TK&p>&}1nP!S66 zkPq)T68P8KXyH7T^X`i(%8Hi9`QChKzbieg^7}i<jmFPDw*2xuqI6=D&yxC{=O+!m zKH|EmwPAbTqDC7FCm*qookDj{Dk|OM@_LytO?m$9gTlT>cXSoIgzhSH9?ENVDqOGo zDf+0Fz4q^jr}?w)wf%ZMui~`FbicBd4VrSt{2yGHe=EWMxZU-`NuM9GO#Z*G{8LGF ze&6)(3Ev+dd^R_p^&sQC{Wf2j+E3m0|M79Fm+9{*qCa(&-`jmy5tL^Ay>o8CjcpmG zpM|;CS+=Rg6`tpA3wv@lXV#;WO!{a&V~aSB$T+#wU1p9-b|<y>i}!Ht+IH4`_I&Nv zyV+PyX|$KF$rPQSbv#}?>g4*j)f~r;&-CW1xVe0hsONdTx%)hk`|x=yFRX&Z=IMwd z>88^kwdS`yd?Hi7gWpVk-u&%5@2w77a!6sLyX_BF{k+cy>hJla^KDnz=w<KFb(G^; zmyYOd`+(g-rL9}f##X(bJ9D-0qMrRd^ZxlpFUsGtbMBKBJ=-^(yt&lYYbDP~4%>Nm zJ|4atrgnI4r;2g?ox`<hrzh!))qfT8=FYZ}p842$jo;Z73)VajYzln6hn?ww^rL$o zJO^JNyR&}5)O!YV^D1)hCH+r)<Sy4^{NQ`j#_mb~r(QgB^6<e=Z*1O8WcfJLUZQaJ zoA;}7{#l)WeYl;g_OIsVLp&$li|>dg)Q2bLmOZREwj=cC+N7oNtAEa3wmWLgeo^~! zr@A|F_Ri;}Z^tyBy}~Ru_1fF#H=bAhxn6$1_WONZ&mZi<v!hkxW<ERkD75T+;g7I_ zSJw|7Jb3V7^rNu#D~k&t;K%X@JcyYt#&fU3K|OYMcJ}t@2IJu8kRJ7e0`4E*%;n1p z3JQL_;xPR7&vI{jd!WWkd5@?2K8PRS<Kx>tZ&|a|&ibAT9iIdG4~{wnn?-u+2j?8m zdzrhSI&EtD!_U?~-tPG+?w>2G{AubVF2j#?T=!2M{`|C{)cEIhi+5j`mwnECp#tk! z+ekhH^{hFLNJzhO<YId%az}&PeuC9wVQ5GD{K08zGh45VA6swpXWGu)|AM#is-{VF zd3Dt3=Uq++|9iyC>hQF>f0KWAe|kJoQpVdzfn9Kq+Oc&`iI%?0B5W=8K3FgKq<E6g zHt|~zZo7Z#^{uPiQBfoJ7TohbI8Ex(hv>Mr?Js|SEcM<lRkQWfgp4_se-|Ek)NCg< zQL@^;_~*a;_`*Mtf>PDzKQ9h^tqAINTUc?OY^ygrir($s_&@5`@~eMm|9mc~_vO9W zgKiax&hJXyOfy8kIJI58{``B1O?&T;onHTI6MyQwxxcCAxSj6p=Ss8qUOAQj3HhY` zXYI>3JDI<zx6hbWc=>zqvZb@PP2HT{oU~}w{fhQ@{e_{9LVxF2uXFkE_;`Z*|8|?N z_d#9lJn;~bBG%p)KkgQv+;>A}GPA76WzDz@ri~K~)t0TQsZZlK^UvscxK3(!y8mRO z5-x4aEvp>wiY}?vIJjBzM)jXr$JS2KJ1s9cJ4Iu~gn9FxPJZav=Wk$V==k(w@U_*J zVs+R2<}y5*);^<iw#c^IFK#=vG<LKHMf)Z0XNb2KoPQ|IutR3*gGtJ7^R%Cxb6;kB z^f2>xAD_jEk3+csZ%Hc1YLb|(V>8puRmIBW+>t3Kzb`(`E*|l7`O&|#e?LE2I{lb? z_l_rt&(s!4%szc4-6Ts-eo?|@|LkiYlehohx27iSTYl)i<oVa$6ifQDm!4i3a`?YU zS&UJ=?PSl64R_}GZjD}k^5z0t<JBtJoA1oGuPJ)-;`#P+<`paD`^#IWwcR%oKVulr zA+%pyQKMnunhy^?%-Qztp=H}5p}Os!uG$lQL7nX{8Q5n1PA+hko1<c>pv;wbrpwE2 zbHT&O4<bwMx(L)Xc%?jI4i=o+%6|FDUnQo{Q@d<`9{*LHxPQ^&bxUW)g&#COvAWz@ zMz%?H|D6X5Zd&iPTs8Gi+PBv;BULlkO;kP9@aA~%b<I69Qwv{n1@GOyrS5jqu5*jH zcI@Kpzi(UqCD%mFxp3OiKaGY)Gnpn%H*8z_=H!|Q>W5BvOnCIi{m9OAlXJVLTr-{{ zW50IO<7u6KrHVf-?+NUVtc&~-bTdwUx!jH9Y}NC7?>X*j(z~|0bXDq9H}9`Um}lI6 z89ZBjd&|!AeNnDbFB;dH%~QSY;I7gYan3m2pmJ&lgBg42e8qojE?Fyi9(yd<w5XxM z(^Y$tZ~BR;>*x1<WrM8+Fko2sQe!%AiteAynzDagn$&LZPrIRYy;1At8L5lmhHXnz z<5rvfx%}u~*gsB_ukXWN_I`h)cka`duYsB&>ozGb3;lEB)qZ{L`MkfktK4Vnt6g_| zs@;@=-Fp+Rt$4Tn;kkIhyut}P_BcO#F8|{7?|DD>^Y{IoHfg`HT<f7f!g78464t62 zf2x^t;p5Gfc`X}yc7AGM|Nj1S32&0{<1aFD;X)EMN1rrIfBVH`F~57|#%=y7NnI`n zqSW^WvF?|j@9iRV(8P6#LPZVJyeQVaX}bHB&B|B&*Wj1$o8+~Aq3qcWA)9-?eZBa7 zy-8Q(!}sd7U%r05c)k46!W&or8~tXiIGk9sQ-uFry?>VQB4uY6yU&`%@yUPhS**)b z5j=J3+{ye|O=-V4z0{w-Ea_Jj<mO(JakkvByp-j|+le2gZhh=j3;VhKG+Wah-xnw1 zE*jW5KfLT}z3lg|&Xc8GmeT9P);W|G^Sbs-+_TVXXR*3RY4pNXB7v<2oEO(6%~$_7 zYboY5<wLFI6LvmTkq--x{QF^A_~hmj*VNbC6sh^(zxQIOkMQNU%Z*=Hmj6uscaz8Z zU#7X;x*lyOjf72$e@gy-t1E9;^Wg1jPoag`QWxC*#9XP5kJ_hw>;I`wYYW~K=f2^8 z1?v|+>6pE~ah-ckPL9c+y{QqqRtZ4o65B$zc{TX>Z<*|+ceZGyPiS~Ve1zjimk!fy zRi~`h^QY&1x#QkdIx}JmbBy9U-X8(e(<1d&y$F>}{mYs?%VWv)UF|C~M134xO1xQE zr#f*qG0NLrWEbT<+E#P$I%C_hBG2VfS2d@9(s`b9P9?_kfA^d6hLz9y-Y$N|{o)<N zq`Q6mdAWb@S;#RS%-ys<-reipx%TbJE;iLyvK|QX&10{%HMaRAE)lC&969+>m(Pd9 z<mUf>e&$bdY;6tsRZ%-D^dG#x{Oa9(<_UjO=XKv}VT1J7y>s8$WJ7xE6TWT@UrPP% z`fcS|KbMP!{mWFhTi1)Vm%e+K#pxeA7yQqQvYY*F|F#-!ncp$ex8wI8Q&a1>7Pe!5 z#kPY#4$X-zPQ4bezCvehWa#;F6S;|g{hjN~Y`(pH`9>;lS5w`MON_#cFHMNkUns56 zJ@)~>5?5T)<NA$;bx~jHLK$XhM_w=G@fWW<>0%-hwk=Uh=izbhwX1GVir0G*klY_p ztG#fA)T~WMi_Se``6l{h|AjjDOt<FRZ@xZvcC7y-_iWm=_s<U>G5KcDBenI|w8P@b zH7DE?%eG~{t16s#<-B|$ckGuVk5$~0o&>+%_Q|_>zaW2>&R?VMq>7hP5^5i7nogb9 zzmZjAP;!#T<!{F9o!7dm6xEh)W%^yrTv8rW8#@=$gYVt4^Xz(ipUtIT()45$1A-$h z*Swk(l&B%pxaREV(%Bc6{m7p7j_b>W8j};UD>o;;o!FRXZ1;7o&hga+A);H=J{%9} zSu(}8^u^E8$eHm@b0m_I9}8|cpQq@*@sWFu#_6U1GMktEd$~<qe(l3$+x8y$lQ=sj zE<*9kKS|q(d`01rI{C_V=f2)Idvv|;Z}i0c-sJhO6S4!Y8~>cw67axv6>o3o?#xZk zUftPs__UPv=S`wr*R;iBpQr5d&r1$FS0h-?S~6ElaLEepExIOGn++w@LOv&mlqzKC z?%(70>Yr6nx&6X|86HV}5hiE<PC0w-GFct=zKt<@&O3Wn?d13;nXWV`nX&uNWz$C= z6{3DIzFyiKwhqyIesgkBjQ^7P9q!4h<<8utr%yjQB`@*f>%z$R+OD}%Mf&@FH~K$r z-@kB0OZW$)?H8**EtXt(fBM$i7Zt&`MC+$7;rHz=aF0&<SID<C%Kk^vhuS|?yO>OU z7dvsxf6!!h#`ek;oy+!VA4`6$cpJ*U|4)CS#IcpH^*){dx#;L$TU+11n^)ZK?|&_N zZb4epLh~OrwcS~7B^Sj%xWis_wkt`{Ui|C*vPbvV{avrUU$d_^XZm}cY0bOlo!qYS zmo;vQk;eTS?9<^rc%NW!4}Q~=_D2hiOFBxp)Q){z#A_aB$l-pvG*+<5Zt|&TdLc0{ zmN`s+!~9iBx5l<VPo=YMZ-%$j*Dmh6)_ym#7rkN&F}eL|>e|vNYfHm+saM*|Ej&K? z@sHF0emPp6J3BAd@!#}Ev)A39y=-6WD*NPscTI~+RUBt7*nMc*F8A2lgD)Ppg}1H~ zP}Y}!cyj5C_-wN;g^vpzYfmffU(Mbxt(RpKGw*WuwngQKcT6p*W^<Z8;eWKEUCH-T z&b`0p_0<LbfA~sGYiHm+8^u}+jRUF^E9?%<Ent6rJUax^u@_rayYk2D7w$qlcB$6` z`;M?P|G1M-?0L&F=Ac4d){0|S*-Px=*{{AjDqEWS-r-<hhQ5*2&1JF|8|$OAUuV9W z|MgMn<HKrSb+?={u5z`P(S2U-`k`_`nBlqDduQy<K6<|C-*2s_*=hgFPV5&rZg+jz z%LVJIAL%N`T4{5$`UE;L8TelLbp2BnXTfhy&r2(H^|M4}YuEQJ%i6(S_2QkzrmgI@ z&4GW+($e`rUHq55y%Pd1Jz2#x(M4uwSjx7Kdus|BX4XyhDV*<M<H*wLlgR%{)$UnI z9G{<ITFMD6Hoba=oz`9ZE&PuiJH)^DmD>bfleKJLg}U?vrkZk9-JSNwLB~`7c1~Wl z#E+fAypK$~=G@Xc1?l8FFEH5?l@IIY3or}GZI|b7kZ_swt^aNC2~8d~;hwJ&DW;7P zMqLZ$*8E&$ZpXUY<r`yos`%b0X8)EaGklgV2)Ji_KzK>Df#3CghYme-`n2q4r2EA- z2?-g+u-L@g9~8dw3w{i{p=0_)n7z|e?Kbz@zYdRdwmz~t>R$YXYs2js558Se_B63O zJbNqGQ*QSn^&Q~B0BzQ-i5Hd!-|#e&+snLj^34KQ^OwDR3e&FzoICY5=wtZhi`h)E z6B$;de(+Ec3jA~BZEfNUu8A`^l0`&LU6s-^JhFG8#=N;pgV)E+{`p*x{deH1<@<iI zerWk6`6XQQrKwG$+@p^MUmxk*)Y|rE^UuF)|8Cw{zunJn`{4rtlODb`d7a9^qsFmY zbXwQ)+9yW8Wkf!F`myoV{<WvBU-_3i;r)&0X@6dSa-6GuXzm30?bpv=_*~%JbTI7| zV|Vz^Z9mjF`9A!4x{}jJtKR<M@#|Vw-voy}+1|6~_kqP;GvD4(FFW+mn`N&1**`~` zvilZxhTr+zv{1Ctc=oc2O$WFiUsn4y*D%iZQ*xNdwP)geva9#loGQs}a;cdVUZ*c1 zT9P}vKeU>6)4ptn1vPtWTb6}7tdgm}o2t5h+j~U``E)(a2dVSB!c=T`m;6%uDs*!x zldyAe&YjZBJC-`F{<Xa|I%dDFu!q6V_thnGfB)Z;(SLvN-SOtLrK@*}=+_wYs6YR4 zxOT(O4}bQYRTbH)B+Axl`|6;6Md57rf1lH=lB-Woe0sC;jxy&X<9dTfW;gGL-uzQK z?>g_?bt2t@YeXZp?tRE^*mdaEGrhgvt^EJ%xk%Pa+Wwur&E<YZvGvJ7$^6vGo4u>2 z1W8U>o_=^cV#41zdRooKAFHQFL`6Klc|t}$sWi)tHPyCXs3+>VtpLM4f$wff9C7B) z>R8u)X?t06I9r+f|CU2X`fViA54>kh7FYeRy?Ex~b2t0yqwd`AtG}o6>sN4EtK_8q zXFIeH{9AYE)|*39)7I$s&NusV-}mi*$z$xGHgkRL_q*l)Yl|P{n}d2UQ#0jiOqFBW z%N|`>51uFAeq`!5c;CO^hgBh4DIXMUXF!=xp9xpCgY|}8;33e^!9hL6WB2TrfB#^> zrTUk7<sI{F7ng%3<lQej#v-P<*>=BD54$9}?aTQcOI?NezAd-hfBOw+QvHk8@s66@ z9Zo)b<{#Sr=|hcW%w3;<rhV3b8(!8(TXptH6u)P?`IpPzZO7KHxAm9|kF`}zXmYe- zH9vKTf62KYEpuih?g(FYxp>1;&$Nf8N4dALOlZGvRDQkw)V8um_r*O8gx<S~u^MQ< zXysYF{``B+(up-Sf|HavtDgAnd9!)-v&gs;F)Qv*{di=??`)QvH=ayy?>_##k#GN9 z2R)gbOhw-PPg5&q?~{+;Ub6aN_-dZcV>2(yd+FG{NEV#A@w@R4{nLL$kIxrfxbeHq zd)wM`OE>=H=I85on)Lg4$MHiff0*KUOj0LL{qkw*tM5VoZCBkdw)EL1&Uf2Q`~RmC zJbkK?6Ph{Vgp<P;ZkVH1T+tZ%^H$^CA3O8vR+p^)ws7jV#j+pY-gy4XWd2HHEWPpb zTc-A#rk`g!>JqyDBj5fwr`1g=zbwmTx*i<wKiKz=zw*`o-mkay?&z)1c)}%h@#F62 zlWI3ws<B&XEDPRqfh9>f*~cgJ=f5*@IrA<^9F8?DJOA!>j^Ka2${9O5HI6+q`YhQy z>vX%uobRVkKjHWD6-b`ks(yJzhfDjhnKO)j)|KoGJv~RkMWUlZ!_-=4t7y$%mm03w zM-_@fn!NkA>|Q&=T7Kp^5&rFe%nW-c^M*Q?V;Q(OHto%_f6=Eme%M_0ibZm}%@LnF zOE%O7To3yvifxqP^5eZ1W=&lm`sUdA($CRLqqp*}-6p^G*mlt5dPzWd)cJx>K8uig zy5GAmKgqc;Z)WJEt}%THSbn_joM_ccZeV|x8?@vU9$&n3FNe%w_PUF%}D*I`|a z!J^)?YlY0sZ+>gx?3Rn!YP9pqdY$QhY_gvosGMY!3@k_v3;8s&^|AWFv=_TN6@D;G zJ#mD6nUWSa|FV<6U0GI5DXsq0|MmN!I#>5tZ{xk|n(`-vzi;D^d-=1dxjFIR%d>$v z=hrJlb}s#TTkJ}ySm=SPz7>Do?OdFXG1WeIj#eW|hu=HmXnp=3@$$lH%h!7!zdq;o z#rH-(v39<nemfI2^Y@z-p-UR&Ze)F2bI$t(@|63sN4UE9kZ%2v=S5mqKiId*PCpZW zK1E1L=k^QxHGj58g=O|^0Z;4KZuq%@_x~hU{i$zDi`tKG$X)wn=XGn3@C!$OU1U4& zd+NH@wnxib|Af5^`<A=%Z-#S?^|zgJ+w7+lAUeTp+gZ0;c*NXO{QQ~!%h%fTf9|uV zulGE8U$WmR@gFC@d;Es5$&!_JekY3O2rKF&ud{i0@b7P%*ybBYENo@jS2i9D_u;F! z>F00!t6++F_HP%pWgaYRN-t@Le)#=yr;Cc9Pp}JD({c3&D?=}2U;AX8RNVfn|I>$u z8Y{m@-MYw=ZF)K*UcUCf*WwwX|LQKe$H&Xp)~d^P#s1abEZ<-*b8Ncz#|QtuFELZJ zGIBX`?q*N!lk7G3rH^0jRdI^EY5CJP_=1nU<I2ZBmcQGml9bpey7uRl-#dSlW6pRh zT`APMzw{Ho`+~2>=KBhR`{D~@L(H!S9FaIFy=t;`c~i)C(N$i8p&XM1)_#`J_*VI7 zedMn2f`$2MGwO{_9ln?uR?_+8v!GLWhyV6DPY%D*S}lL?Q&y3{&c!FU=IPHcUG>|H z<@T5R$&fkz#l?NOKdzVEbeOQ)vgoFRNzeI!A6Gs|z0!KRTgdG3^IJc4FYCU!o%Q=- z7AR88rZroIr!?_POaFO(zJ4-~md=t(HS3b?b1#1F=<V%o+rOR1J6v?phr&YHryp#b zQdhHJTZEjvdik2qzY3nYov&RIF}>5(`he)8dky@hnbV#w>WaG>crAXzvQC$(wbe7a z!VZeKxNLU`2+*9OAo1a$aBaZFfSeQJHL?jAI@3#5h0ZO~JYRI~neu_DU-qA<W1o@r z?uK2~zJ_;v3OC>WcyR67``*Wb0(aDY|1Mqf<b6$rwcC-+?rYiP9zLkNc-{E0a(&~) zr=OOx-;J00FDKu0-M2!a&3eCw*4L&rdPW8xduH%w|GZjyrE7YCPT8Me6*=V-2b;Zb zuMj;cde?>B>Fwl77x$hOA&xh%Eu5AfEzaq_?$I6JjNm_}-q(xQpIjpzc*-g?R(1ar z=g%H3%{Lb9+IwtvYh~P$pfhP*S9Z0{m?^dAM^e8}QotdN8k>5%=dIVHf9ESVHcG_0 zH6C4j?qpm2)MxS&E*|#zTX|vIpK69p`_B}AS@zHC>258vN6VM~nf6lbTkh7s8K(PW zf5%9lULTJ!&3*UG>YnVvva?eoowwSBeGo|teR^k-bic>)<1XRS%T&LYl<}I!I@;&F zZ0HQk^jJUr0`G*QejnHcS@jQo+<!yDUbkw$7Q@-8YhGKmE$7~!q9nzoecM2E+K0zW z!>;C@)E6&WvC)0azNrBryuLS+EYpjbesleb&)C1%Wbr|}-)d@kcb@OB-7zORYX5wG z;mbD;8)RLPiWWmm%g;W(fA+0!LZ931LJ=M3qt??tg+H4vpx$=lMg_~8&Cw@<*ZdH? zz3b1}C0oK0>hl`j^{wWf)_&i({QHK9rrUphZO`1s_x1&+JI9rfFuv8hmV`)jxhQ0R zuDP2AUK+8R$yP<4x5)ifPQ>iA1-E<rYqd{*j1CEPUCa5$P*hnnwST(3jNt4U3Q^Gy z|4p?w+Hs`bU(_W{;g$RCGjo64Jhgwx!TTNTrqk+Xx*F~&;pLfJVdwbtxp>ao*tIp+ z7kmD>@k?Nh=f9@8B^$QA|9ZRs+T+_B&zEl4y3`YGD*U7N%yrqDp1pdr>wR%|U!T5B z`O{RPa}TZ5FV_}HZ!UV)y+eD!>yS<b*VqNQ3s=hZ95h%si+%A5X2<NG*p^pMPqAo@ z{j0w<UV6vcuho~Y@bFyjz5aUP9N&+@Vg;p_-#5-me8AN<p~dgX^#6$q4DT<tkL=y| z@b_|c{ygzx|F=1wWpU1rkO{rND5|>cg?P@%^(!Nn)t`Cv@<ZV5)pB(=We*$le7m&> zW3v8+$ZwOnAM#yZ6|DNj(tFkIX9@nQy{Rp0Rj2v3YrprU_GNB67V8@Rw`dPqD_;}% z%dXBgwsF?7K*bjS0>{I5T+TnK7IJD7U#ZPgru%2RAZ$dTYGGXP|4&~8`q?jD;*Zdm z{j%t33ER)V#qYj$<)oh1|FwHf&GkjsZ0gR{DwJRSV|Howt?j&T-Mv9=qFXV^pA*gJ zo!_JOYS$HCzwf7-{$IHs<h%0an`?VIf)1y#fR~FG?pbl6H$0~z{9%{Cmzg17Vpn9m zSmrQ2Cw<)yrKg`?v^iM3aSu0nCCYkNTJ4Sb#nQ)Kpw2yf#kc=s?ccw^J^QVz{--~H z_3WJ;-dX+B)etTTzi`F&)lu;tySg)v7w?~cf5D6eYnMvQJ#Q{pBk}*M?iMbNq~^ad zf;Dn0LVL7Nu74}r(*T`P|Ghut?Eke2$KGA4JX-VBRyNlDSN02!n7b~j=BH+>^QOi; z2-ZC@x8U(EdDhD;(_c?=`|N!*-rasu!UxUWbp{KVIoLkLri%ULS(hMSZ@S9ual<=Z z&-zC3l{{xxU43r7IqcM-dg;!4ypO|*rt>Y)|Dr#g{k&>wY3!wgu_61ilLhV5cb>5G z{e0UaKkL5PHu>va`N!?9Kl|i3SKX<|$g{qjC34yXWy7}Rk4oNZi|m{A*M|W*U(YIF z&DRtZY<efwwnY9~`T2w|pZ+d7w{U{~n@9b<6F545xXk=F(V}Rr$GXD6L{NWT@}l^H zY86M8)|x~}fBwip&0|$5F7rJc-Yu)In6%{V)Du-#dllX+&NN*yJ)neff56g3*K<!| zEF^z^B`hti)$45YmD;qkfzn^{xwr4AyWJ=;VM0@#O@lYjyiNX!%N<k>M)bExbWHGZ z6Wns=<C*g(6I|V|uYSXv2I|Uh7XAP84&S_tNe}Zl1E;)@^Asr47U`<K_KDGd#e5f? zCY{qRzm8YT;|bPZH(_sMe|z@P(ylzopKF?T?ENz5lYVDI#$JirqWhZPT>B9c;D0LO zT<{IUiHpkpVpqRVJNSa(lWWobkUv*TzRYq6e^O98&s}Na4yQjmoK*V$I8WmIs#0Mm zbaeA%>pIh$wjZZW)SLSzh%wk^Oa6mDRhMCF+IuS3{1Im;oG>G0)85Lu_nVge+q%6E zV>;h+d+5Hfja~BEzayS*_u9TG-}`O*)W5R7??n7A|M~iQ)I_f4BXVCKi0|2PwpJ@@ zqWR^S&Hl&si#0LZ)K_LTO{T_teGJBY{qa?M9XCRI>phU(dTkC;Z~f_lf0s6UFV7Fs zpBSrUU}$pmSgd((wAPkY_0c<ye!Xqf2wq}f^t%MU#9-Iem@e^sl5LZV|2(w2AyZs; z@0qrN^vCt<?Nh^MDE`do+s*Xmz1EtudN=C6W}r@^_x$a3UGEZ`m|HykUUmAjS1lTk z^%pO%zdY@QbZ(xyrPkxMIYnie{XtsJMo#_e<$peGnR>DyUFqZ*`R@huZ*F?heKa0( zt$o53tM`ozAKG@93psz-W%yk?W2w2%a{l|FyOr*6{w%Ei%VV40;|ZR2&((Rm_3{27 z9k&f(DJv`L$_}5}KP~-vVZTbp`9B9cZl~0Tr+&U(8K+%Z5IJQ%?-nWhu%Bx$t$lMl z=(po*Q0WGru=oDiE(DpdZ=5T3>f!9eE8{^^@$LDY*=yi^@q!<>3W(~mTQpm>uV<LK z@%!pCU$?wJ<KJE{)c5~}lh23Wue90D&q;X(n)oRFw0Zu?HxC|MsGH+B_i%Va)2Edu z%D%GsFWaFfYxpc|eeu0Dho3*z{x(0qp~`h(M8J-T&P{WE6c+qgbHhsQ%)y7tPVS%g z|B{wP&0&jwmzkc*ba%%`ak8_wmwmX(|LT`|y}I1HBeAy=i+$bu*iZKN6_uFGx3Tan za&Qy5GedN0O<JSR$CUCz=rga^aqUsO`RWSKeTDsh4IAwKPB_|@tvp$NMnU?Ix?MK| zz3)5x%!{yp@Idq5dBG=#v!}Modpz~eSE`zGpZm9{Y^m<qFT1k5>#!_sHY;2Ih4<5| zy8`a*EhqKOcT_KUdhpqXyw|__vGoPZ)@<E0U$pOk&C-9x9o}!$X7&`jzdO?G==%4_ zr$gC&T{pJWm|a@>aQhk7;xpn+N8Y<~a3yGH+jyiNRK93$R+jVs(6g7HePS0H-m`u0 z%3xq``1^2o@aEF6r|&ydB>UYtx|o>MMAv$l%~cFv7kT`ABFBw&|Gi(GKX~w=N&MH> z*U@)7Zhp9D-+>3(YV3P*mM@pAwK&ziwN^<uScT7j(L^khqZcnpujkHvDlX=gx9B6s zt3Se*y5>imIkuAJs!ruqXA8CYf1bTu=Kk!Ea`wKRpKAI3ek)q?3$mejPJQV$!P(Yl z>`xtTU%cc}b_Va<zNIw>r1>77URqJ`zdC5PfUM-E?PV)wrEXc@zps92;2ExZ`<IK~ z2VB1+XZHGjufR0J@Od8|{HvX}&M_xx&OE;AZ<`N&oWK4?J%bhIzS4vD{=R*|j<Nn) z!N}<7;sxi5UKuXlTzTi><!|e!i&b8@e*FI&-3|4gg0rUH$6TqbD1Pl@bLrpctMi+i z4_EHH=Qwxu?1&@HlYBR?d+{P`UP;))9WTpTcbGqLj-8ddbH$?Y(kWlX*JLV9yvLw$ zS@`XeN#2`dw1TgSUK0-sun|mhPgj>p-8R)|>07O33nzu1*6?E8u5cr0<A#+FxW3An z7tQm~FWT$!uL%}}Is&LYnRhQV@6M|M@6b&10q@XM`Pei&mO1+C`Ze<R<H7x<pZ{-L z*UvE9w6^ho+{4Ucta)#AeHx`N`y@-{H%e#7C|-z`+&lHFQuO^(8V9+QZk?FO8s);` z)LoW3Mg95OBvq!=)=h^_akX6IHCfgnow2M_dUt}<Zb`0XlH%{Rc@DB{VCRuG_^$3M zxUcy9o#Ov<EQ{aIEpBeq<NkV`>0*7<r>(#Hs|%*seOmH-lgO#iRZ$b?PF3CHs{MU` z&p)kfZ|N26rTy-AZ!$;QGrNDCubq`~ROaQ?wqF_E2j0Ne0&Mp%{=4;#wvjaJl}&D; z+MD*yS*%k1^0SFxMNjL$`+NSfFdeMCbMI;RboS{>KCdj<6p}i{L~GgO;$62BkAMEc zZ#IA4xvGfLhBu3%%`SFLo!r9QTN}IR`eP>1153h~FPj`(GuwJ|81w9{>tFOZ@tK;P zY=~dBAz45oWX0Qa5w{C!ZhzhV^3&Tnaa>mYMRx9n7RTDn<E|uiPTF<Y>)neJdN*@D z_pLNvB0p<}hX?Ow(YF_N{q_Cgb@*>~b%vG3yLZ>Vy6^mX*7bj8WXt-y^>^aTGhRQx z-5mD){^l?{hRsna&rg3p@%YzusaNsYE9$#VF5kaq?2w~#Wc$55nfb3>+&2f=i~Xv< z{7smH<#|!{Tr2GvqW`@99a#N2?%orHm|uIpaIEI9UF?vz-Yw~Ze|VtUgR4Jx)bzSN z&whQqYqr*X!>7EH?&mM~!vFa7>%;Pq3KAZlYmLfd8ooW*-rf3b``ne;FPHq9ef55+ z!msn;@9od7UUl`a?zHoJ9#{!yEo*(f&ZETY-1eoZV)9P|R+~;}*4e`yEq-Cu|Lr;U zjSe4Fx0nCi8nh_M>czK`+JBzkb`*N5znt}QL3rW3`S&l}Fn_aS@4CtNcikzm_W2U@ z^pA~ifz|GFe`C+q9tmKRl;nJ{_Q_iN1^K({wy&spb&gHj+t_D`ebe>x4K;f|J$&?S zDVxd6xtaI=36+%}j+%0||9EE5#c$Eq<F)ewe>c3afBsc|?TW-*zt7!ozW(ap+iCAt z{F{4j^6c9&@7g4{n!S`d_WHul8FyD$moUten-hO(f5xAfMgQmDu48I^5R<n)IQ+I^ zxWR|EM=X2&=Ggu{;&kfd?EKvRt#jI}P0l`PXuAD!nfuH1ikhw&=h;@|JpW$E`q-r= zZ%$t8!wQL~8D&q6zMQXn@b>m|mh+YGu3rfk(c)UHyf=e2JAThS&cAt%KdYJylN{x3 z&*|-&6UW9Z_hy&dU*_Zcm)9C<hww<|?|*-1kM8aJ#)sZ)Xu5sVx!$Hpe(Kvljjg}3 z59(&jPj>llx&MDgboQG^>UOe+?ms^A^36eW8RZvSi~gIP4!^CqJ$*q>PtCtfl`HLk zgJzi?yl{bseeb`;f9G$S?xE7~`t)l(DNv&M3{EtKtEb0*H!9Zg_Y;b&@ILe7$hE3@ ze?Oc&<6fECB&qDEVsq4cy6hLOsLbhG7n>hXdS<A3o9W^aZ@0G#rgQC?=N)YDz^Zxq zb1qf4U5fLw_nv>Q_p*HQ)6GqV8jm^cQx%^bIHx!@sPW64PtU)UJ&j(p&ArUhU&-q1 zGv-cxXCsHr-^?%C=Pj(YK6%<uJk2$=*6^!k{_0=ZtuO4){(SZKc|!Y9l_QT5AMJN5 zT(CL*&xx#qxBlMNy&qTAclD&_y}kU6fln{L(-S@4d0Vt<r{|VLrOIFDeHpy6`)5RC zCZ5i!)>(e7QZD{M?S{66;Q{8`0&N?Oug99yMQyEL4f1^Y&*SFzYd-H^AIouCWAdKa zr5pYfJPX^qR&(<E8Kvt#-rd|=#(LN5uU&EQ)6G9U_RMzk``<lt?r!nT4;Fpn*Q-&8 znfdVHrTbfUMt_-aeY2j0sqw+C9eYo&XR!Ut^S!#T{N{#I&6Y!TIa&Y0Y&XpDYU#M& zHf#5hORo*L$L`<1uqHOvuZpc%W0Kp-n(uNaa<|s+?)X>y{CB^Df<TP=_Nt$vCy#D_ zXt+p^UC3(bU7gR~@edzXG9KQaWAw~&$rS(3Z?ybZMX$T>J3ar$bl+oDjfc5*ukPLw z^>JtJmb?GnD*ZY?_nkdcqeH>nJ8PeYH##T?aIi2P+<E66oYSb<609z;rSt6k2Y=f& zU#B;5v4GSwo7@k+E}UXy)o}gs!rO`qm;H17BvjpAGx>dmVa2ZqsoK}-a(ZuLyKCmu zC4J;z_A)QyyQ!bIdD5wX6>>{Yb1gh6q1?sZe%IxG_{sH4PS)&WnDdY0;|GPV+l*<f zy7Lnsg+9FXgga0F?`HXmd*w2gXP*RI57<6!X8g_FQ|3guE}gJF(pv7F_pT<LJ-i$1 zC#!qcxX$WZpMB!K&feJHi+TKo_`Y3yT$JFxd`aHMS#dvaAFFr2?QePFkbL13<5r`a zzP2f8w=>r6cTli!E?(}p$<bAHy1rn=uLoY{2KH+WCu_>cRwO6A;@v&-_7wS9egY}o zSNe@b3WYoDR1I@K-95s^@b9GNBDtww&dA7@N~+Fzkg4SO^rErZs)XQUksd4;wueQW znPQORcZcusttZ^?7?zq&TA9mN_<*lPQhM$)@#LoTo8E7B=|7K%+O<>ZUT9SB`m)c_ z6Yux^{aE{Y(Wbqp;#GT@SGGTlnDR2RbK!Bx2k#~S%Vyj6%B)mh8mu1U;Wg#v2G6?h zE^fhpS(y$>&ay5&$~&#AVeR~V%lX%pJz2bPp_u-RrVRJG>jriGC*PfyEIVZi+K=Y< zAaz3Fd#?3e3wFE>DKkGI`dX|ky>#})g93Zyq@}M)H9vG*a!BTUob3LeqJirJ_dVcC zc(o#x_kzas$re+5kNvT;D0=nlxOfNKo*gQay)yfAtX$t|l(d~SKY3fc*@EFr|Cztp z|E}cRJ@AG->6umJpB@dpC$rrCeU<UH4lQV__-S^k@J;yB>%Oo0pKd<b`(DfU_;u4K z+g0}S{@y&v$L!D2PbZgsI9}Y^Asx15f99X^4S&~6>o)ndkNKh8nY$*pdu#X4{KwSz zfX95_a=)OYJ^w#6^1r|Tp-8Kx=%C>2>Ebc}*I&!9_7x5;y7+dbJl~G!YlRwrfAqb( zDg5H_%GEU?*$JN?zc&0CQe^n^wDi6G_2*|#4|eI(&kNu8z%R*UPQ$z2ztfj9p3why z;=k{i&3PI};%$zWmwZdf&F^e?cK%bWcm5&kr#H2=7R8=&b^m2g>T(=e{B>{nRUKhx zXP&>-y;)&DULRL%YipB`dd1Ve?&*&#^Zl+ruV>b)oa9^P_;tm`|9v0tpZxY&<XmEt zSFh8%FPHxGzSI{e(J+5?CA9o{<=m(gyO}9^!3SRS8d=NkQhO*ZqFq*V@WJ!>e;z8x zIh0-dp7=)BPG#{|!@s}PX3w7eC!J-Jz3!%DhE2llv5WFmI=1X}F|zazD>j}~;dh~u z_Y-S5U-^F(#q};rBUnV(nC^xYWrlq_6=FKI_lnl4H|iNrbFL|$N$Lx)F4bSVW3Kz; zst>#JJsNMjtp0d4ua5iE`m6s=a7~;bZoB{6&6oRLe!Tzk+vbV$CMxW$nzyvAI5$6} zzHx!`&WjHY-}0Mw-ddr{wX3c9{<7vHdm@dl8!X<pYe$c@U}|wOk41|8e&2<U4%McF z>|GeoQSGJk-=uxj?U%BW>YtPxpPsa_X7G^MeOl+)t8TWZSG4w(pO^elKJm6ihJT&< znQeF2tB&{G5<igg|8aKR2@yxWOS-c&j-EQXm0jxhE|>MkS*@>q`!=J>`Jc0}Fy~9J z-xBYX&K?hs{`q<B)A;3oIn{(%dP4W*-&j(A`SJeCZ=a{<a49p2FI{`*{;K^B7dro} zRriuuDkNHCA#1kauPWE#8L7|Ob&947KVHDKt!~*rjzzDnPB6C|mh*bqp7ZAFS`W*) zj+Nh=E;^c9zqV@Q+;#0k!Me8rrt=<`SvE9(dlH|vc<+PPfl<$wUlFTX>lXQY)7dk{ zn>ln6w#dcjKHcB+XZ5Z5jVsGtWGbIczByTb|Dhl6HGbc0cq4yIe|p4O)AgHQUyE0G z;qvdAMX6aoyEt3u-%re!Uhb(dZY>PBpLbhS!o|@!ly}3)6XIt&Zlp+GDbol&@UYBO z<wxPEgb+XJx!Nbi@9>`Cs($(@vi%&S?Zo?c@oC@fhh6kTcbH{4sGqwRn^beq^6~D_ zf8M9sSKpl9xYGPcOy#r5l2?vNF7xjDpZ4vvmTaoMG>6R#=b&QU{StZZ^^FhqT_{?1 z?(SpPX)z}l^7!N4E4sNlTW1(<$gxxEwEMEhYiCwM@o$M<wh8vS^JiIYSK2S<zoz2Z zYKNQVJ|{v`{f#G7vvIWlULpGIL>Qx4fOnvqQ(@E9(6Um=_XQ&R_a3?y_m^?s+}}q$ zOpg7?o7HRdrA6tBr`GA#=In|3J5Ga|PLe#wI#*;Cg|h$ikT|Mgu)VyOUv#t6(Fq^F z{dRb}=126}W7iGEd*6rsoV_f*`R_~rJ&N~MZ=7{1dDq?wMxV(^J9*fz9p7*Cv#<4_ z^R;<4X-ji9ezLk(C#Nl-^uqL}Z>`|&3yVNyi-~R%zx#||=QZvgukY9U@LJ=|dfSJE z-mgQLclTec5NMA*WV0sVR`pq*s>idQG<R~ViliM$Wv`Vl{hh96q<$<hHBV4ePSNJK zbm7S-1^Z82JKw#>>X()8?TTY_lBeCc!Nf09uw(ruyXn9F9J{fu=HT6BGb(*fZF4aB zI4RKj#ZspA&o7DesYyBMn|D_Et(*U^Sh(TREoHSe^Yr3xEAO78E;u*sbEAuTt4XHm zzFTMSo7}y&>~Cc0$F=8MQ_2NvFJ2GOn!EOi^R$rHkK?E1B*+EW)-!!%vbtZ#RMG5c z<JS1}&~)jyIxqAEIL>|O&)@g+S$+I&0j5TW3oCo}-(2GF`|0qd)J0!7S(pw!6-?jH z#lm#Z_aWa!?bU16bG7>^2;8wrTIL6CAv7*v7BDVlg0vT88wy^5+5`#$999euuW+*D zCVf_~_@B6{ZrN&ZgCf3jnWFEMhn|NH+EvByy?HU^if-6tZ4sR|l@GrA9v^-1viRSZ zweu?~YOeVCPdNF4A+EnYuf1i~FY%Lay=CUS_#)ixE)lS6WATZ)!r4<po)!PBnHaf< zQ9p0G?8z%P_3Khh=O((Zj@-R}jlirP!$lPZH+;X;PW|IG>x`x7f}Z_}4;#Dv*Z)6j z?Cq|=xzFtDkJ#gaVZMB&yrtPQe@;Dpw0m`E2v?<a>uQ%xFS#~-FgsHBi9N0~;g9Ze zdnX&4jz?t;k&dU+XH<k{%njt*^ub-`sZZ0%yjP0Gw~sA-b9v|E&8>ekqU&bgDgS*l zsJ_vmplzAo-1pJqQ{RUE)5?_bu;n?v$mhHlkL|gLeT_deduRGQd~rZkI5@xKzUs{d zizc0(&S6tq@bXamGGUgRN?#xIxZYt|<nQS-yT*KD(0+&OC)PjH2rbPr<Nte+<9zzV z2N$)kM7{p~TYY&)Rmdgd;+iX|Qwo}vcd|@%Kks++)}-3WJ>R9?bO$eeCx_YSm~Q!O z<(%Zqm(RK?!Z&I@)=^=45v{G0<|SdKp4aZW{P2m1RY8X?7OZMq;xdzW_LK70Mr&>@ z?>?5U{rlp&Kd&F`yM2DyFK(75W0TTXVUtd_?GLfLDe|vkoj_sp)f=lMq_RFXX?8qf z^L9OO&Hw&o_Lx^omaI$sBRBc(eB(D$vK^-8q|H5WTH*0M(Kyk>eC5L@tz#$pPjX7w zCBB|JWbN0#qTA=5ddIdi=`PdTHF?HX5{s@UCoiu0vQ6uE=W$yRvFio;Hpd$u_$3l* zlB|o#ub!PhX}dn#>)gD$ly~u;m#4jEOS2a+zJBsix=W$rb(2r)pGVwU*<^g=^!C8M zWO42Nc|r9$WquzX9{ivXl-QTPzRx{z;%Sy|E2eduoO{XBQf*LvIY<6#uj=oTi$As` z*x#B|9}9|bA8>?wzg;<5#d-$Y)x+LT0+HJ#m;MQMxHrB2e^qMw9v^VKWa9alyw|T1 z3mguvo4%o{<au7?@r7R=TWb~jFW_Ik?$buaq?-RJJmq#rvpnZ0UF4M5I{772{+s<a zybg6A-T&n$%`0_Q{P#$6-{N<nx1%3Dyddy@>Td6E=MR`tXcu<&VGRD%%wV`mcSz z7rNPphu84Sdy`d>57*1LOGrs2WvnokvC65du~nPzrKeV3dHDDD_m!WEx;ox>u^q7V z30N6;B6d$n^}O0$1vPP(>SCh)nHJuE`yA3n(LG=Hw`Yw2XXVAu#na@iuHG$;dq1u3 z+&gXqsa_*%-ut$v<2LT-J!GyCc1(hUZDD}D)iHU#M~o)RnOEpvyzz(go-g|b<}_7* zt(nJOU7TCp&41EoZ{n}-XLs>l37u9SmGV4;^`xc2=^5JR5C1f}5p&js^Bu#xf1XZp zonGrWG<aBct$gw<($ea6k@D74+w+rIYR$ftttnO7Jmc}zxY`3E+dpS0GgsUV*igmx zBG$F+(FX4dw<eLW=^k}W_bwJDbv_SKpY%lM-D%rp=_(%U=RLpa+WcMS_mz^Gs4ep0 z)9QKel>e?={EM4KwkvhH-V6@`gRr0fgl30qovSlHJhL0#vbmXUIi<3+P_kU<)U#(2 z1t;q2W;-2i-F;B*I#;*K{56V}RgxU-okyE<)Ys0Hf5H3L=|*tU&*hdOcm3X<u$U;$ zspbFd=ENqOUaOPm&u(4c@!<7E>#{5L3_joN_dRR(5qzR>cT;Cr&Wvdm7j9fvt+Lg- zv2ok~16QO!fro{rN2%{V4QnZ_L$s83pE=HA);h7F`%>7uL*D0ZsHeaFn0d5ri}L>1 zcf0@Y$^6UO<acCJu(`q4z7FN{HJkRDt1J##)WpC1Fx!^>F^M9Z&-|I-`mQKRCgk9? z^H<~@Oa6X2dGl$J<f+syRq1*653BsK6pOB1rNJ-2SFN#Be$&SA?L|*Z*q+|yc4NOQ zVj>^sZhmTgz0su^`ESbYSmHk4H7@+{W$uD4=loadeu?Vc^lj;4wS6@^joSJWo9;y{ z-zvN6Sn(Y__Jq4DC;vVC<EhZ<ou6f2ett9g?B%MOsIBthQ|s@7qT}u_ZkD+o-plh6 zUhx`+&-<Ce_EjkU^!)a-j}Nvw2JZjUP-3-vMcDaz0SWf6Tj#7hpui<{a~bQ@32ToC zZ$5eA(oEMGi&dnz9<mYczr$<)tK+{_+Z^vrJK{DKFdtldV9kbbyL8<vpeB+=oVZBe zoK8LSyL`fTUoBJ8zS7_~XYcB_0jq4%FT8Dfd|o!EZjO<J=-)F>&mJp(;3z+7mfhE* zPYlIxE<fFKKJD9Mt0&tpo!9z)w{F|w{SF238LzH<Rlg_j{%VBpQ^UJ)dl;5^e%#ak zVET<37opl0m0vUbTlz0%F#NpyY30h|@_zBiB1PsMwiSEZB}94OE=V+f`-XkqchU1T zq8h*3ICrjklgU<ep5bAE{MJJ<H?<Ugclv6DeA0T#EStjrccH=FcCD3dy}QKk*E4Sw zNmUV1kBChTpZ<~0{o`%z9ND)UFG-~<=H&4)MyJZJy|wJS_6}Aojj8m~;EAGVxI~?g z-G0x!b@QYA+~;<NLcNCjW~VLYv0cbfJLy!>!!5;y7k{uFkOjAw=Kgh9G_^L%)Nb~z z{_F|$J&1<Y(N}S&e&^ZizS0-q@GIUJoc{SUymc~R!RDzoCxTAjU@_hBTcVe}@P_J{ z!(2=EUO%%$dfC-#C7-|PQ{Fw^?=JqMROH+Bc^_^xeKjsz*m9_6$D0N37w7#y<MQmp z4{27d7LGpN2Sqm~o^jS%%CtV+Xuh-3mR<i(-BAj%ajN)c{%F$4hjkOz&KIv-+GT$9 zw}av58B=l_GajifF1z5(8h3uFri|@oXY?l4u|F%{PK-S_xx;VsPlrX5on~c7pPx~D zMo2pPK_fHY_t0z4gPxz;5!+%eaU@wJLa*lIqAS~Kvl8vsIsP-;l*0VE;nhvfQ)+k0 ze`h*^D~0-+&u7j5|Gw2Kz`@ewm-^?dT5Z-OdA-M+pk|e*0Ck&Jg|DzQi8hN}I&A*4 zPrSJ=c>l|2`;Q-9tdLEum{hQ#Uv4_HwUugV_th_4t==s*0ZN;D__az-t4&Rs=kqGm zcE3!@!+wiXGiB6vuWUb)BmDrq1@`3MCZ`OeV;zqUCYoRT9{Nc;)5u+X%O(GU-7Am3 zx9a<qU9=*5MfB-2>toja%@UpJbkA+I!tdvoL{lE-cKm(9zvtC~AJKmGEfp04N8d7R zZkl%9;Nz>DGdov5%b!}euy(_Ye?ND9G}o~y`1tbc{>rkNBazy_FRFdNTNl?}$8@lE z@y|}7U2b)z?kiUXZ?1gN?^a>Q&E6lEXc{sbseNVNdH?C}Yp$u)Q}=sGu?O)V-l%bT zvygMY@w61{W^SL}l0XmjnfjI-$J9N2!hhx|al7?hnJm=T=J9uuP^wwZr2A`+@8R-Q z=h)=>>bPXr4o;W(lV+Ix%u8Zr`2R#Cu-~gHt*?JqkC5L7lZgvHy}0>2BKqtX;X908 z*($-eWgZ=n<uEq0I;($-<@~1U8OMwImM)#G{V4Y6vYyQoI2Pou-7rHl@y47Tve%f4 zx1YMNwRdIhh6!~&Z)T_Lxt{R9JNR+b&HmR9>~5bg`zp-wPT6<vuD!iH>cwKNcAi{~ zFXQ&;1+2CE%)`62;-AP7FQc0urk_%ueMtVis8Zerq1~neAqxzSUn+~OQ=5GJfA)mJ z{AuB?pq9+OE4<*A%-07qV-NqZRoiW!enazmgVxP6R*lmgkL}goqt*0iTky@h3gK(K zZ${otD=~0cfBcx+)@wob2W1aj2|O*eAW%=eP-Aw_&)R|~SHAY^3-DGHda6ymBzLo< zD`w}tZ)W#Z^5c0PF&NkzeP91GcylT9X8DepuTwr6FWNC7Tk7ZaVx6}k2PGdpy{&P4 zWB1f}^Gb%2Af#s3S`SdOD`V>Z&?@cU7qny<Zu;B2Tex9ITlGWB`Ol~7-007KC<hCc zY2UBh+*KtZ6R_d6s$TJzrAv-f{C~(Se{cW8ry(3mSD)NEN!F+N)xxPvUmuq`NB%AO z6z#b*W!Hy_^E*3>XDkR>Ji$6@mSq+5TGMkDv(%P7S#(>Oc>{FN=*U-=Uj?tU<fWHs z>Mx%E;9K$)zh%jLHva!)!tnE`{LlTJmDhM%e{?VZ@#=2#t$RZJ?QK7v$IR>AwPx>n z{&c;Qhu`m4-pSfnv1Q-)b+b~FGCCI4FAqG+RsYxG$b}06&dzfmUP#0;7*!+2?y>rh z?&atk?A_lM*BiB2&rjO=<>;jr*58G)9KS1F|FSeydwDNE_ssu8UGZf5`v3ff{a)ZE z)pSscY`NG>f3=yXMGUGIpYdxyw?87Rqh-&FpQhRTrZ*d%jVx`}Jna2D{d>OJ$J6W* zY$y1R&pci2*7W67<+MKT_`3@tHa_NNvyXqw&;F5N)8={g`5zS}*Y>}>Z+`R6ohSCn z6aHpSlzq(gi!;v_+A`Y+ZJAwK^JePGEG_Akp&>W@FQotN<^Z?L_BxAi|C|xTA6MS( zGq>T*k;LgQq&byx^(XqAn|$?7kIFpZk~rso(_ZSnX=eTXP-aHznW^bXOV3D7PCr<; zrF+Bt+!yKscY<fVU&)-+>N?5)+60-sJS~ThJaXJN`P#Yrm&-QQ%v04D)0E<?o6RTm zIqkg6DH$IX4vEz@^)LH*e0=^g#F`uE6`AEiM|@V!4;P<asJ<vCuaB|)&GYS=Au&7p zd-}}3a3}hAKArz8pwxP=@?)1cl@&HK)1N;m`o)>2xi{JUEq}tM{~t~5Q@Rw`UrzJg zl5}{>m&RlJ^e(<GJlMDOt9)?&iTaErB}Gs1`1_Ht=Gh`d^X&G9Pbqnm?DJJ+qi(lz zUz+PU&u#9L=g;(XVzqx?)H?(z)c!778q6M`H+^BuvWQI&f7<#SnxFiUYyK}u=-5<7 z#dp~mRqjV7rrXWjYw=k!(Q21w;`Y;1HhapYGe+AVHj?=Da`NWX{|0qCk7T|3(tJZB zZRStK?mJJ9SgdGTJAb8p(~DhvpBNr)Xb<|OC|zBu9qN}JaBpuy$%V7$ETv!SU-B>L z)?E8JIE#C4*y1&{H<vxz8Ob7MP{Jep<(So4*a(-HU+n5XVwYy$Y8QKH*3Z9wvGmjH z_L7-8*KfS9;n?$Rce?c1x5s%4;@>`>`bC)Ioo0APu)1Qrq1<$En=Le7W<!3*&QE95 zjaT^IE0}vu-z@q{nMT%y#b4(Ac^3G=L)7c&W&WN6&2}oL-+y+m);HvP#Tnb^C}I+F zm0@;I&B30ow@q9Y{`LoTkFVJft~bB*1y677;lA6it$wZrk8$lkv+PnBy!qB}_-;VG znZ2K6&#B1e&-Z-1YqG!f%d&3^U8~j_oIkSI-Nx$Q_a~;SIG27^5$?XdysK*6-;AaA zMR)XnyS%E7sd2%%qsFD1=HFQ2q`E%H?t<gD3-Vl-t5;0gBy|4BGv!GyoX@YGvYO3o zJG3$PeC5}FN2DL^m0G>hX4&m-@dGBB(@rmUx%#*h)RvoZeq~FNpc;G0CRO%>5e)8{ z)xS;~mv=0<o?>2VW;X4OwAzzZo0dzSuw`yJTziG9IAt}1^ope#$_p(HzS7#gtEb$e z>wa8fw*TfO^B?Ff-Zb}qx`BlHqGcyTWq&9qiYz`b=c@10FavGyv>^YLb5T*Z&ebNV zNF~>ppLLV0auWQdGWF@9%;gUkeY~qxzxqqqw}qj*uDy71`;H9Lwo`UdTi?Z+Y?oKp znEXCM!Y1YI$>cD<+1t7Wzg^x`$JF?srF*W`Vux0NgBuxR_^c;YdMpij@YQG8KhJ9K ztc34|Qv8oLc+Y4T^{QS!(^LNK@y$PfUVHAeX?MrI7uhG4gPMGkT5qsljhR&WT<7sd z*1E~B4jPM#`}<$4h7L;Iylx{b?xk_2<22tdyI0@N`=t2wT*ua&yLRB3ll{TD%P|Jc zWXhLbIPJS=-sIQI|KDL*u;p6^=W0Xotm>5MpH&uJ&as>DV#$P#K<n=e3=CU5T^vKy zZXGjzCbRj-F|mpV4To!|e%*Pc)!1(O+51|1r`B#rvY&PFRGo~nx0wO|iny%MZ}V=S z&%WTVu%rLa<JtN9e%`;X*W#ccP@?rX-|S`Z<Ua~Ff{hLZhdVaMvobY4SXR*fVruBM z@K$Ga0ggO5!(esLoLZy91;z-j%py@UbMx8D_<4EnURlcu89;j{YyRxY!J~cA+U@?3 p(KUwx%OmrwAfszdd=LIJu6?R>^V1iZY6b=d22WQ%mvv4FO#o<lU_k%? literal 0 HcmV?d00001 diff --git a/scripts/r/wosis_gelderland.csv b/scripts/r/wosis_gelderland.csv new file mode 100644 index 0000000..51771e0 --- /dev/null +++ b/scripts/r/wosis_gelderland.csv @@ -0,0 +1,137 @@ +continent,region,profileId,datasetCode,latitude,longitude +Europe,Western Europe,1043374,NL-Alterra,51.9869754296712,6.66512775140325 +Europe,Western Europe,1043487,NL-Alterra,51.9318446115472,6.72492383376485 +Europe,Western Europe,1043649,NL-Alterra,52.0798515887413,6.66004877868393 +Europe,Western Europe,1043659,NL-Alterra,51.9936627533121,6.66269731775114 +Europe,Western Europe,1043660,NL-Alterra,51.9821529678361,6.64635643198432 +Europe,Western Europe,1043730,NL-Alterra,52.037119170175,6.57742952924864 +Europe,Western Europe,1043780,NL-Alterra,52.0991175500654,6.58433479853221 +Europe,Western Europe,1043672,NL-Alterra,51.8468250687541,5.04325730535564 +Europe,Western Europe,1043726,NL-Alterra,51.8838260352328,5.09845794949358 +Europe,Western Europe,1043996,NL-Alterra,51.8703267595176,5.09172008656531 +Europe,Western Europe,934557,EU-FOREGS,52.1735534667969,6.12252807617188 +Europe,Western Europe,936545,EU-FOREGS,52.1744613647461,6.12108087539673 +Europe,Western Europe,937026,EU-GEMAS,51.8363990783691,5.73999977111816 +Europe,Western Europe,939307,EU-GEMAS,52.2529983520508,5.97200012207031 +Europe,Western Europe,940825,EU-GEMAS,52.2491989135742,5.96220016479492 +Europe,Western Europe,1004638,EU-SPADE,52.28,5.67277777777778 +Europe,Western Europe,1004950,EU-SPADE,51.8349990844727,6.39440011978149 +Europe,Western Europe,1004960,EU-SPADE,52.1497001647949,6 +Europe,Western Europe,1004998,EU-SPADE,51.8791999816895,5.72499990463257 +Europe,Western Europe,1043359,NL-Alterra,51.8417826794415,5.76303308619986 +Europe,Western Europe,1043414,NL-Alterra,51.8487259350058,5.48473003000238 +Europe,Western Europe,1043437,NL-Alterra,51.9517970237933,6.27999989177124 +Europe,Western Europe,1043438,NL-Alterra,52.0212737896895,6.31555029039846 +Europe,Western Europe,1043439,NL-Alterra,51.8861096574626,6.40979230685004 +Europe,Western Europe,1043440,NL-Alterra,51.9213054991888,6.16927503256824 +Europe,Western Europe,1043442,NL-Alterra,52.2583238234529,6.10576684087282 +Europe,Western Europe,1043443,NL-Alterra,52.0372830375992,6.50572301589194 +Europe,Western Europe,1043444,NL-Alterra,52.1186372762925,5.97816845668472 +Europe,Western Europe,1043446,NL-Alterra,52.2007629967604,6.03447777869832 +Europe,Western Europe,1043452,NL-Alterra,51.8881997169589,5.79247287794364 +Europe,Western Europe,1043453,NL-Alterra,52.2587794127159,6.11939601192225 +Europe,Western Europe,1043465,NL-Alterra,52.3784075079796,5.97465293069088 +Europe,Western Europe,1043471,NL-Alterra,51.900585080128,6.21541172686921 +Europe,Western Europe,1043473,NL-Alterra,52.4052193802881,6.00439923935644 +Europe,Western Europe,1043492,NL-Alterra,52.2446874873908,5.68004364616612 +Europe,Western Europe,1043493,NL-Alterra,52.2801837334695,5.82681532116272 +Europe,Western Europe,1043494,NL-Alterra,52.2800710551312,5.85612182794135 +Europe,Western Europe,1043495,NL-Alterra,52.4498331472039,6.06386258041626 +Europe,Western Europe,1043497,NL-Alterra,52.0349780481537,6.07361488830368 +Europe,Western Europe,1043508,NL-Alterra,51.987466611723,5.73950522709367 +Europe,Western Europe,1043509,NL-Alterra,51.9902223178924,5.71914440973995 +Europe,Western Europe,1043510,NL-Alterra,51.9702307191602,5.78884815113306 +Europe,Western Europe,1043512,NL-Alterra,52.175264308364,5.75706958971034 +Europe,Western Europe,1043519,NL-Alterra,52.2048234348862,5.7880359227378 +Europe,Western Europe,1043520,NL-Alterra,51.9518850861898,6.20617527339513 +Europe,Western Europe,1043521,NL-Alterra,52.1043275978643,5.96374780454 +Europe,Western Europe,1043522,NL-Alterra,52.0686860256527,5.89619911320435 +Europe,Western Europe,1043532,NL-Alterra,52.0460057460825,5.94258822138741 +Europe,Western Europe,1043533,NL-Alterra,52.0439369590646,5.78805181261344 +Europe,Western Europe,1043566,NL-Alterra,52.4710576215444,6.09237116830651 +Europe,Western Europe,1043587,NL-Alterra,51.8916008338445,6.04411355521617 +Europe,Western Europe,1043620,NL-Alterra,52.0399474323931,6.20982638161075 +Europe,Western Europe,1043621,NL-Alterra,51.8339328713459,6.3937354398722 +Europe,Western Europe,1043623,NL-Alterra,52.0566184686734,6.07730043935141 +Europe,Western Europe,1043638,NL-Alterra,52.1176109901154,6.38406034452057 +Europe,Western Europe,1043644,NL-Alterra,52.000040756335,5.86891603404359 +Europe,Western Europe,1043669,NL-Alterra,51.9327619717027,5.69545505894351 +Europe,Western Europe,1043676,NL-Alterra,51.8270942382564,5.43652298716078 +Europe,Western Europe,1043677,NL-Alterra,51.9921743590726,6.22875133815689 +Europe,Western Europe,1043678,NL-Alterra,52.0484799187396,6.14379752867074 +Europe,Western Europe,1043713,NL-Alterra,51.9487229804887,5.86756514160977 +Europe,Western Europe,1043718,NL-Alterra,51.9194631858207,6.09103714142383 +Europe,Western Europe,1043721,NL-Alterra,51.9675615420288,5.6524761786871 +Europe,Western Europe,1043723,NL-Alterra,51.8916354726359,5.35161177262147 +Europe,Western Europe,1043743,NL-Alterra,52.1632407876139,6.51721145745995 +Europe,Western Europe,1043744,NL-Alterra,51.9603837930429,5.89467903395776 +Europe,Western Europe,1043755,NL-Alterra,52.4748394098444,6.02781698247647 +Europe,Western Europe,1043791,NL-Alterra,51.9340391743238,6.45814386938861 +Europe,Western Europe,1043795,NL-Alterra,51.902001515691,5.98149337770624 +Europe,Western Europe,1043796,NL-Alterra,51.8772815103495,5.84087935242759 +Europe,Western Europe,1043797,NL-Alterra,51.8853042720797,5.61669515405629 +Europe,Western Europe,1043798,NL-Alterra,52.0745789537363,6.13869604845764 +Europe,Western Europe,1043815,NL-Alterra,52.3611763526077,5.79825694858949 +Europe,Western Europe,1043831,NL-Alterra,52.078714366821,6.42294703047974 +Europe,Western Europe,1043833,NL-Alterra,51.7949425646501,5.79308382666961 +Europe,Western Europe,1043841,NL-Alterra,52.2358005506794,5.63606783459817 +Europe,Western Europe,1043844,NL-Alterra,52.1451376938751,5.88392230216291 +Europe,Western Europe,1043845,NL-Alterra,52.1159645551022,6.26320360086702 +Europe,Western Europe,1043847,NL-Alterra,52.1512287018757,6.35156847467647 +Europe,Western Europe,1043855,NL-Alterra,52.0027152777602,6.13181097316419 +Europe,Western Europe,1043863,NL-Alterra,51.8114656960064,5.93026943657298 +Europe,Western Europe,1043887,NL-Alterra,52.000117339021,5.71630528666841 +Europe,Western Europe,1043951,NL-Alterra,51.8911848101944,5.34768991067293 +Europe,Western Europe,1043953,NL-Alterra,51.9365128565311,6.0168502959525 +Europe,Western Europe,1043995,NL-Alterra,51.9814143847621,6.15940571968117 +Europe,Western Europe,1043998,NL-Alterra,51.7747827545608,5.77406620536347 +Europe,Western Europe,1107921,WD-ISCN,52,5.75 +Europe,Western Europe,1108244,WD-ISCN,51.9166984558105,5.41669988632202 +Europe,Western Europe,1114660,WD-ISCN,52.13330078125,5.75 +Europe,Western Europe,1115602,WD-ISIS,52.0166666666667,5.96666666666667 +Europe,Western Europe,1115651,WD-ISIS,51.95,5.51666666666667 +Europe,Western Europe,1115744,WD-ISIS,52.0322222222222,5.76305555555556 +Europe,Western Europe,1115758,WD-ISIS,52.0386111111111,5.74194444444444 +Europe,Western Europe,1115811,WD-ISIS,51.9166666666667,5.65 +Europe,Western Europe,1115824,WD-ISIS,52.1833333333333,5.71666666666667 +Europe,Western Europe,1115949,WD-ISIS,52.0166666666667,5.96666666666667 +Europe,Western Europe,1115994,WD-ISIS,52.1758333333333,5.85916666666667 +Europe,Western Europe,1116107,WD-ISIS,51.9669069444444,5.68972611111111 +Europe,Western Europe,1116108,WD-ISIS,51.9906130555556,5.65092611111111 +Europe,Western Europe,1116109,WD-ISIS,51.971765,5.63835805555556 +Europe,Western Europe,1124744,WD-WISE,52.0333333333333,5.68333333333333 +Europe,Western Europe,1043795,NL-Alterra,51.902001515691,5.98149337770624 +Europe,Western Europe,1108242,WD-ISCN,51.86669921875,5.25 +Europe,Western Europe,1043831,NL-Alterra,52.078714366821,6.42294703047974 +Europe,Western Europe,1043493,NL-Alterra,52.2801837334695,5.82681532116272 +Europe,Western Europe,1043995,NL-Alterra,51.9814143847621,6.15940571968117 +Europe,Western Europe,1043951,NL-Alterra,51.8911848101944,5.34768991067293 +Europe,Western Europe,1043844,NL-Alterra,52.1451376938751,5.88392230216291 +Europe,Western Europe,1004950,EU-SPADE,51.8349990844727,6.39440011978149 +Europe,Western Europe,1043649,NL-Alterra,52.0798515887413,6.66004877868393 +Europe,Western Europe,1043716,NL-Alterra,51.9351073379871,5.55951292298864 +Europe,Western Europe,1043674,NL-Alterra,51.9322044670349,5.26506679199667 +Europe,Western Europe,1043659,NL-Alterra,51.9936627533121,6.66269731775114 +Europe,Western Europe,1043791,NL-Alterra,51.9340391743238,6.45814386938861 +Europe,Western Europe,1108244,WD-ISCN,51.9166984558105,5.41669988632202 +Europe,Western Europe,1124638,WD-WISE,52.0322222222222,5.76305555555556 +Europe,Western Europe,1043374,NL-Alterra,51.9869754296712,6.66512775140325 +Europe,Western Europe,1043660,NL-Alterra,51.9821529678361,6.64635643198432 +Europe,Western Europe,1043942,NL-Alterra,51.9463935357968,5.30211697110787 +Europe,Western Europe,1124705,WD-WISE,51.9166666666667,5.65 +Europe,Western Europe,1043508,NL-Alterra,51.987466611723,5.73950522709367 +Europe,Western Europe,940825,EU-GEMAS,52.2491989135742,5.96220016479492 +Europe,Western Europe,1113886,WD-ISCN,52.0833015441895,5.46670007705688 +Europe,Western Europe,1043521,NL-Alterra,52.1043275978643,5.96374780454 +Europe,Western Europe,934557,EU-FOREGS,52.1735534667969,6.12252807617188 +Europe,Western Europe,1043497,NL-Alterra,52.0349780481537,6.07361488830368 +Europe,Western Europe,1043793,NL-Alterra,51.8086447528695,5.29802653688626 +Europe,Western Europe,1124844,WD-WISE,52.0166666666667,5.96666666666667 +Europe,Western Europe,1043495,NL-Alterra,52.4498331472039,6.06386258041626 +Europe,Western Europe,937026,EU-GEMAS,51.8363990783691,5.73999977111816 +Europe,Western Europe,1043713,NL-Alterra,51.9487229804887,5.86756514160977 +Europe,Western Europe,1043359,NL-Alterra,51.8417826794415,5.76303308619986 +Europe,Western Europe,1043533,NL-Alterra,52.0439369590646,5.78805181261344 +Europe,Western Europe,1043998,NL-Alterra,51.7747827545608,5.77406620536347 +Europe,Western Europe,1116110,WD-ISIS,51.935555,5.54938194444444 +Europe,Western Europe,1043887,NL-Alterra,52.000117339021,5.71630528666841 diff --git a/scripts/r/wosis_graphql_q1.R b/scripts/r/wosis_graphql_q1.R index 6e0ab0f..2fb9c57 100644 --- a/scripts/r/wosis_graphql_q1.R +++ b/scripts/r/wosis_graphql_q1.R @@ -1,11 +1,10 @@ library(httr) library(jsonlite) -library(dplyr) # GraphQL query query <- ' query MyQuery { - wosisLatestProfiles(first: 2) { + wosisLatestProfiles(first: 5) { continent region countryName @@ -30,11 +29,7 @@ print(status_code(response)) # Parse JSON parsed <- fromJSON(content(response, "text"), flatten = TRUE) -# Print JSON -json <- toJSON(parsed, pretty = TRUE, auto_unbox = TRUE) -cat(json, "\n") - ## convert the from json to dataframe object -results_df <- parsed$data$wosisLatestProfiles %>% as_tibble() +df <- as.data.frame(parsed$data$wosisLatestProfiles) -results_df \ No newline at end of file +head(df) diff --git a/scripts/r/wosis_graphql_q2.R b/scripts/r/wosis_graphql_q2.R index 58a97ab..af70fca 100644 --- a/scripts/r/wosis_graphql_q2.R +++ b/scripts/r/wosis_graphql_q2.R @@ -1,58 +1,54 @@ library(httr) library(jsonlite) -library(dplyr) + +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + # GraphQL query -query <- ' -query myQuery($first: Int, $offset: Int) { - wosisLatestProfiles(first: $first, offset: $offset) { +query <- " +query MyQuery($geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: 3 + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { continent region - countryName + profileId datasetCode latitude longitude - geomAccuracy - profileCode + geom { + geojson + x + y + } } } -' +" # GraphQL endpoint -url <- 'https://graphql.isric.org/wosis/graphql' -# Alternatively, for local testing -# url <- 'http://localhost:8888/wosis/graphql' - -new_results <- TRUE -first <- 100 -offset <- 0 -all_results <- list() - -while (new_results) { - # Send POST request - response <- POST(url, body = list(query = query, variables = list(first = first, offset = offset)), encode = "json") - - # Parse JSON - parsed <- fromJSON(content(response, "text"), flatten = TRUE) - print(toJSON(parsed, pretty = TRUE, auto_unbox = TRUE)) - - result_count <- length(parsed$data$wosisLatestProfiles) - - if (!("wosisLatestProfiles" %in% names(parsed$data)) || result_count == 0) { - new_results <- FALSE - cat('-------------\n') - cat('No more results\n') - } else { - cat('We have more results\n') - # update offset - offset <- offset + first - all_results <- append(all_results, list(parsed$data$wosisLatestProfiles)) - } -} -# Print JSON -#cat(toJSON(all_results, pretty = TRUE, auto_unbox = TRUE), '\n') +url <- "https://graphql.isric.org/wosis/graphql" + +# Send POST request +response <- POST(url, body = list(query = query, variables = list(geomGelderland = geomGelderland)), encode = "json") + +# Print status_code +print(status_code(response)) + +# Parse JSON +parsed <- fromJSON(content(response, "text"), flatten = TRUE) -## convert the from json to dataframe object -results_df <- bind_rows(all_results) %>% as_tibble() +# Convert to data frame +df <- as.data.frame(parsed$data$wosisLatestProfiles) -results_df +# Print data frame +head(df) diff --git a/scripts/r/wosis_graphql_q3.R b/scripts/r/wosis_graphql_q3.R new file mode 100644 index 0000000..9134f5d --- /dev/null +++ b/scripts/r/wosis_graphql_q3.R @@ -0,0 +1,69 @@ +library(httr) +library(jsonlite) +library(dplyr) + +# GeoJSON geometry +geomGelderland <- list( + type = "MultiPolygon", + coordinates = list( + list( + list( + c(5.177260142422514, 51.74291774914947), c(5.126747881386732, 51.737828850498403), c(5.137580867932065, 51.772905259431077), c(5.014540023249575, 51.808984680959583), c(5.031415073146523, 51.841084802107702), c(4.993967909252922, 51.861222725420994), c(5.062358224116345, 51.859362053527242), c(5.180226727863164, 51.96744832651509), c(5.236867149255078, 51.978757478459428), c(5.321611332014112, 51.954919171164796), c(5.486214078473083, 51.98382644510454), c(5.627223829712356, 51.952386168324438), c(5.550342661060417, 52.10541954546126), c(5.459242995490565, 52.080225755481266), c(5.514079463312799, 52.135923065932062), c(5.439875615559026, 52.171197458274222), c(5.44103943147957, 52.205693438951691), c(5.393219147822698, 52.220626892173925), c(5.404643399611359, 52.249630480909225), c(5.533281176545358, 52.27274084169683), c(5.587707385036856, 52.361454261431376), c(5.787257137970521, 52.422573287061603), c(5.876205471530124, 52.522025026941051), c(5.925559518063968, 52.474057592745915), c(6.027857569808684, 52.509606205409327), c(6.099483437203417, 52.469970896552461), c(6.130552948323514, 52.399978162269164), c(6.078506385563601, 52.369523051161245), c(6.066224466859907, 52.318839289847247), c(6.163909067147507, 52.21749619292715), c(6.38185154627214, 52.246112812566473), c(6.492401220236633, 52.177371870181403), c(6.671338986248984, 52.165683203635673), c(6.662399005672591, 52.130167439615931), c(6.760572413121598, 52.118779940206082), c(6.687853003658449, 52.039856158091141), c(6.832754328999235, 51.972938087693585), c(6.721969582522561, 51.89606334135938), c(6.683993990179909, 51.91757645733221), c(6.472507886098918, 51.853823023864017), c(6.390566170881016, 51.87396806966867), c(6.401818441765064, 51.827262656663407), c(6.117889496603739, 51.901659142837225), c(6.166559884993931, 51.840721643435401), c(6.063485632339608, 51.86545122678897), c(5.962978284523374, 51.836913960582471), c(5.946569966406273, 51.813479919592751), c(5.992067051189349, 51.770245909123908), c(5.943962150919553, 51.741816814422592), c(5.893409336802974, 51.777852926426895), c(5.765188291802036, 51.752789880063702), c(5.638112608999517, 51.819025176083443), c(5.493105254357093, 51.830750957327069), c(5.403157084105017, 51.821611677731141), c(5.357568231054432, 51.757890339715857), c(5.300338754648935, 51.737287437014395), c(5.177260142422514, 51.74291774914947) + ) + ) + ) +) + +# GraphQL query +query <- " +query MyQuery($first: Int, $offset: Int, $geomGelderland: GeoJSON!) { + wosisLatestProfiles( + first: $first, + offset: $offset, + filter: {layersExist: true, geom: {intersects: $geomGelderland}} + ) { + continent + region + profileId + datasetCode + latitude + longitude + } +} +" + +# GraphQL endpoint +url <- "https://graphql.isric.org/wosis/graphql" + +new_results <- TRUE +first <- 100 +offset <- 0 +all_results <- list() + +while (new_results) { + # Send POST request + response <- POST(url, body = list(query = query, variables = list( + first = first, + offset = offset, geomGelderland = geomGelderland + )), encode = "json") + # Parse JSON + parsed <- fromJSON(content(response, "text"), flatten = TRUE) + # Add results to all_results list + all_results <- append(all_results, list(parsed$data$wosisLatestProfiles)) + + if (!"wosisLatestProfiles" %in% names(parsed$data) || length(parsed$data$wosisLatestProfiles) == 0) { + print("No more results") + # update new_results + new_results <- FALSE + } else { + print("We have more results") + # update offset + offset <- offset + first + } +} + +df <- bind_rows(all_results) %>% as_tibble() +# print dataframe +cat("There are", nrow(df), "WoSIS profiles with layers inside Gelderland region\n") +# Export dataframe to CSV +write.csv(df, "wosis_gelderland.csv", row.names = FALSE, quote = FALSE) -- GitLab