From 7b6faa70e9e82d6cbd4a264948b3f863317cc653 Mon Sep 17 00:00:00 2001 From: Tan Date: Wed, 27 Dec 2023 18:18:20 -0500 Subject: [PATCH 01/16] add pb_read/pb_write and tests --- DESCRIPTION | 3 +- NAMESPACE | 2 + R/pb_download_url.R | 2 +- R/pb_read.R | 69 +++++++++++++++++++++++++++++ R/pb_write.R | 61 ++++++++++++++++++++++++++ man/pb_read.Rd | 47 ++++++++++++++++++++ man/pb_write.Rd | 50 +++++++++++++++++++++ tests/testthat/test-pb_download.R | 43 ++++++++++++++++++ tests/testthat/test-with_auth.R | 73 +++++++++++++++++++++++++++++-- 9 files changed, 344 insertions(+), 6 deletions(-) create mode 100644 R/pb_read.R create mode 100644 R/pb_write.R create mode 100644 man/pb_read.Rd create mode 100644 man/pb_write.Rd diff --git a/DESCRIPTION b/DESCRIPTION index edbb42f..c5135ee 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -43,9 +43,8 @@ Imports: memoise, rlang Suggests: + arrow, spelling, - duckdbfs, - duckdb, readr, covr, testthat, diff --git a/NAMESPACE b/NAMESPACE index ddd6b6d..3d2133d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -6,7 +6,9 @@ export(pb_download) export(pb_download_url) export(pb_list) export(pb_new_release) +export(pb_read) export(pb_release_create) export(pb_release_delete) export(pb_releases) export(pb_upload) +export(pb_write) diff --git a/R/pb_download_url.R b/R/pb_download_url.R index 79dce69..43a646b 100644 --- a/R/pb_download_url.R +++ b/R/pb_download_url.R @@ -70,7 +70,7 @@ pb_download_url <- function(file = NULL, file <- file[file %in% df$file_name] } - if(length(file) == 0) return(cli::cli_abort("No download URLs to return.")) + if(length(file) == 0) return(cli::cli_abort("No download URLs found")) switch( url_type, diff --git a/R/pb_read.R b/R/pb_read.R new file mode 100644 index 0000000..be61afd --- /dev/null +++ b/R/pb_read.R @@ -0,0 +1,69 @@ +#' Read one file into memory +#' +#' A convenience wrapper around writing an object to a temporary file and then +#' uploading to a specified repo/release. This convenience comes at a cost to +#' performance efficiency, since it first downloads the data to disk and then +#' reads the data from disk into memory. See `vignette("duckdb_arrow")` for +#' alternative ways to bypass this flow and work with the data directly. +#' +#' @param file string: file name +#' @param repo string: GH repository name in format "owner/repo". Default +#' `guess_repo()` tries to guess based on current working directory's git repo +#' @param tag string: tag for the GH release, defaults to "latest" +#' @param read_function function: specifies how to read in the data. Default +#' tries to guess a function based on file extension (csv, rds, parquet, txt, json) +#' @param ... additional arguments passed to `read_function` +#' @param .token GitHub authentication token, see [gh::gh_token()] +#' +#' @export +#' +#' @return Result of reading in the file in question. +#' @examples \donttest{ +#' try({ # try block is to avoid CRAN issues and is not required in ordinary usage +#' piggyback::pb_read("mtcars.tsv.gz", repo = "cboettig/piggyback-tests") +#' }) +#' } +pb_read <- function(file, + repo = guess_repo(), + tag = "latest", + read_function = guess_read_function(file), + ..., + .token = gh::gh_token()) { + stopifnot( + is.character(file) && length(file) == 1, + is.character(repo) && length(repo) == 1, + is.character(tag) && length(tag) == 1, + rlang::is_function(read_function) + ) + + on.exit(unlink(file.path(tempdir(), file))) + + pb_download( + file = file, + dest = tempdir(check = TRUE), + repo = repo, + tag = tag, + overwrite = TRUE, + .token = .token + ) + + read_function(file.path(tempdir(), file), ...) +} + +guess_read_function <- function(file){ + file_ext <- tools::file_ext(gsub(x = file, pattern = ".gz$|.xz$", replacement = "")) + if (file_ext == "parquet") rlang::check_installed("arrow") + + read_fn <- switch( + file_ext, + "rds" = readRDS, + "csv" = read.csv, + "tsv" = read.delim, + "parquet" = arrow::read_parquet, + "txt" = readLines, + "json" = jsonlite::fromJSON, + cli::cli_abort("File type {.val {file_ext}} is not recognized, please provide a {.arg read_function}") + ) + + return(read_fn) +} diff --git a/R/pb_write.R b/R/pb_write.R new file mode 100644 index 0000000..7dcba2e --- /dev/null +++ b/R/pb_write.R @@ -0,0 +1,61 @@ +#' Write one object to repo/release +#' +#' A convenience wrapper around writing an object to a temporary file and then +#' uploading to a specified repo/release. +#' +#' @param x object: memory object to save to piggyback +#' @param file string: file name +#' @param repo string: GH repository name in format "owner/repo". Default +#' `guess_repo()` tries to guess based on current working directory's git repo +#' @param tag string: tag for the GH release, defaults to "latest" +#' @param write_function function: specifies how to read in the data. Default +#' tries to guess a function based on file extension (csv, rds, txt, parquet, json) +#' @param ... additional arguments passed to `write_function` +#' @param .token GitHub authentication token, see [gh::gh_token()] +#' +#' @export +#' +#' @return Writes file to release and returns github API response +#' @examples \donttest{ +#' if (interactive()) { +#' pb_write(mtcars, "mtcars.rds", repo = "tanho63/piggyback-tests") +#' #> ℹ Uploading to latest release: "v0.0.2". +#' #> ℹ Uploading mtcars.rds ... +#' #> |===============================================================| 100% +#' }) +#' } +pb_write <- function(x, + file, + repo = guess_repo(), + tag = "latest", + write_function = guess_write_function(file), + ..., + .token = gh::gh_token()) { + stopifnot( + is.character(file) && length(file) == 1, + is.character(repo) && length(repo) == 1, + is.character(tag) && length(tag) == 1, + rlang::is_function(write_function) + ) + destfile <- file.path(tempdir(check = TRUE), file) + on.exit(try(unlink(destfile))) + write_function(x, destfile, ...) + pb_upload(destfile, repo = repo, tag = tag, .token = .token) +} + +guess_write_function <- function(file){ + file_ext <- tools::file_ext(gsub(x = file, pattern = ".gz$|.xz$", replacement = "")) + if (file_ext == "parquet") rlang::check_installed("arrow") + + write_fn <- switch( + file_ext, + "rds" = saveRDS, + "csv" = write.csv, + "txt" = writeLines, + "parquet" = arrow::write_parquet, + "json" = jsonlite::toJSON, + cli::cli_abort("File type {.val {file_ext}} is not recognized, please provide a {.arg write_function}") + ) + + return(write_fn) +} diff --git a/man/pb_read.Rd b/man/pb_read.Rd new file mode 100644 index 0000000..aad97db --- /dev/null +++ b/man/pb_read.Rd @@ -0,0 +1,47 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pb_read.R +\name{pb_read} +\alias{pb_read} +\title{Read one file into memory} +\usage{ +pb_read( + file, + repo = guess_repo(), + tag = "latest", + read_function = guess_read_function(file), + ..., + .token = gh::gh_token() +) +} +\arguments{ +\item{file}{string: file name} + +\item{repo}{string: GH repository name in format "owner/repo". Default +\code{guess_repo()} tries to guess based on current working directory's git repo} + +\item{tag}{string: tag for the GH release, defaults to "latest"} + +\item{read_function}{function: specifies how to read in the data. Default +tries to guess a function based on file extension (csv, rds, parquet, txt, json)} + +\item{...}{additional arguments passed to \code{read_function}} + +\item{.token}{GitHub authentication token, see \code{\link[gh:gh_token]{gh::gh_token()}}} +} +\value{ +Result of reading in the file in question. +} +\description{ +A convenience wrapper around writing an object to a temporary file and then +uploading to a specified repo/release. This convenience comes at a cost to +performance efficiency, since it first downloads the data to disk and then +reads the data from disk into memory. See \code{vignette("duckdb_arrow")} for +alternative ways to bypass this flow and work with the data directly. +} +\examples{ +\donttest{ +try({ # try block is to avoid CRAN issues and is not required in ordinary usage + piggyback::pb_read("mtcars.tsv.gz", repo = "cboettig/piggyback-tests") +}) +} +} diff --git a/man/pb_write.Rd b/man/pb_write.Rd new file mode 100644 index 0000000..4edd2ea --- /dev/null +++ b/man/pb_write.Rd @@ -0,0 +1,50 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pb_write.R +\name{pb_write} +\alias{pb_write} +\title{Write one object to repo/release} +\usage{ +pb_write( + x, + file, + repo = guess_repo(), + tag = "latest", + write_function = guess_write_function(file), + ..., + .token = gh::gh_token() +) +} +\arguments{ +\item{x}{object: memory object to save to piggyback} + +\item{file}{string: file name} + +\item{repo}{string: GH repository name in format "owner/repo". Default +\code{guess_repo()} tries to guess based on current working directory's git repo} + +\item{tag}{string: tag for the GH release, defaults to "latest"} + +\item{write_function}{function: specifies how to read in the data. Default +tries to guess a function based on file extension (csv, rds, txt, parquet, json)} + +\item{...}{additional arguments passed to \code{write_function}} + +\item{.token}{GitHub authentication token, see \code{\link[gh:gh_token]{gh::gh_token()}}} +} +\value{ +Writes file to release and returns github API response +} +\description{ +A convenience wrapper around writing an object to a temporary file and then +uploading to a specified repo/release. +} +\examples{ +\donttest{ +if (interactive()) { + pb_write(mtcars, "mtcars.rds", repo = "tanho63/piggyback-tests") + #> ℹ Uploading to latest release: "v0.0.2". + #> ℹ Uploading mtcars.rds ... + #> |===============================================================| 100\% +}) +} +} diff --git a/tests/testthat/test-pb_download.R b/tests/testthat/test-pb_download.R index 7e0aaf4..1051cb5 100644 --- a/tests/testthat/test-pb_download.R +++ b/tests/testthat/test-pb_download.R @@ -126,3 +126,46 @@ test_that("Missing files are reported in download and download_url", { ) }) + +context("pb_read") +test_that("pb_read can read a file from release directly into memory", { + skip_if_offline("api.github.com") + + test_tsv <- pb_read( + file = "iris.tsv.gz", + repo = "cboettig/piggyback-tests", + tag = "v0.0.1", + .token = gh::gh_token() + ) + + expect_equivalent(datasets::iris[[2]], test_tsv[[2]]) +}) + +test_that("pb_read can autodetect different file formats",{ + test_rds <- pb_read( + file = "mtcars.rds", + repo = "tanho63/piggyback-tests", + tag = "v0.0.2" + ) + + expect_equal(nrow(mtcars), nrow(test_rds)) + + skip_if_not_installed("arrow") + test_parquet <- pb_read( + file = "mtcars.parquet", + repo = "tanho63/piggyback-tests", + tag = "v0.0.2" + ) + expect_equal(nrow(mtcars), nrow(test_parquet)) +}) + +test_that("pb_read can accept a custom read_function",{ + skip_if_not_installed("readr") + test_parquet <- pb_read( + file = "mtcars.csv", + repo = "tanho63/piggyback-tests", + tag = "v0.0.2", + read_function = readr::read_csv + ) + expect_equal(nrow(mtcars), nrow(test_parquet)) +}) diff --git a/tests/testthat/test-with_auth.R b/tests/testthat/test-with_auth.R index 4e0bfd3..8c44e9d 100644 --- a/tests/testthat/test-with_auth.R +++ b/tests/testthat/test-with_auth.R @@ -51,6 +51,60 @@ test_that("Error if we try to create an existing release",{ }) +context("pb_write") +test_that("pb_read can write file from memory to release", { + skippy(TRUE) + skip_if_offline("api.github.com") + + out <- pb_write( + x = mtcars, + file = "mtcars.rds", + repo = test_repo, + tag = test_release_tag, + .token = token + ) + expect_type(out,"list") + expect_equal(out[[1]][["status_code"]], 201) +}) + +test_that("pb_read can autodetect different file formats",{ + out <- pb_write( + x = mtcars, + file = "mtcars.csv", + repo = test_repo, + tag = test_release_tag, + .token = token + ) + + expect_type(out,"list") + expect_equal(out[[1]][["status_code"]], 201) + + skip_if_not_installed("arrow") + out <- pb_write( + x = mtcars, + file = "mtcars.parquet", + repo = test_repo, + tag = test_release_tag, + .token = token + ) + expect_type(out,"list") + expect_equal(out[[1]][["status_code"]], 201) +}) + +test_that("pb_write can accept a custom write_function",{ + skip_if_not_installed("readr") + out <- pb_write( + x = mtcars, + file = "mtcars.csv.gz", + repo = test_repo, + tag = test_release_tag, + .token = token, + write_function = readr::write_csv + ) + expect_type(out,"list") + expect_equal(out[[1]][["status_code"]], 201) +}) + context("File upload") test_that("We can upload data", { @@ -186,6 +240,8 @@ context("File delete") test_that("can delete files from release",{ skippy(TRUE) + count_start <- nrow(pb_info(test_repo, test_release_tag)) + withr::with_options(list(piggyback.verbose = TRUE),{ expect_message( pb_delete(file = basename(upload_files)[[1]], @@ -196,7 +252,8 @@ test_that("can delete files from release",{ ) }) - expect_equal(nrow(pb_info(test_repo, test_release_tag)), 1) + count_end <- nrow(pb_info(test_repo, test_release_tag)) + expect_equal(count_start - 1, count_end) }) test_that("warn if file to delete is not found",{ @@ -249,11 +306,21 @@ test_that("can download private repo file",{ x <- read.csv(file.path(tempdir(),"iris_example.csv")) - # warning(paste(readLines(file.path(tempdir(),"iris_example.csv")), collapse = "\n")) - expect_equal( nrow(x), 150 ) +}) + +test_that("can read private repo files",{ + skippy(TRUE) + + x <- pb_read( + file = "iris_example.csv", + repo = "tanho63/piggyback-private", + tag = "iris", + .token = Sys.getenv("TAN_GH_TOKEN") + ) + expect_equal(nrow(x), 150) }) From 8448e4ec2d8761118222a08a1794d260f727ae25 Mon Sep 17 00:00:00 2001 From: Tan Date: Wed, 27 Dec 2023 18:36:27 -0500 Subject: [PATCH 02/16] bump news.md --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 4761470..1958515 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,8 @@ before trying API download URLs. This should reduce/eliminate effect of API rate limits for pb_download. [#109] * `"latest"` release now aligns with GitHub's "latest" release definition [#113] * `pb_download_url()` now can return choice of "browser" or "api" download URLs [#116] +* Add new functions `pb_read()` and `pb_write()` as convenience wrappers around +pattern of downloading to `tempfile()` and then reading into memory. [#97] # piggyback 0.1.5 From 3d997b138fa1d5668934235fdbd2ec99f732724b Mon Sep 17 00:00:00 2001 From: Tan Date: Wed, 27 Dec 2023 18:39:56 -0500 Subject: [PATCH 03/16] typos --- tests/testthat/test-with_auth.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test-with_auth.R b/tests/testthat/test-with_auth.R index 8c44e9d..9ad7dc8 100644 --- a/tests/testthat/test-with_auth.R +++ b/tests/testthat/test-with_auth.R @@ -52,7 +52,7 @@ test_that("Error if we try to create an existing release",{ }) context("pb_write") -test_that("pb_read can write file from memory to release", { +test_that("pb_write can write file from memory to release", { skippy(TRUE) skip_if_offline("api.github.com") @@ -67,7 +67,7 @@ test_that("pb_read can write file from memory to release", { expect_equal(out[[1]][["status_code"]], 201) }) -test_that("pb_read can autodetect different file formats",{ +test_that("pb_write can autodetect different file formats",{ out <- pb_write( x = mtcars, file = "mtcars.csv", From 9fee3523ba7876dee8060da80c89b56645d868fb Mon Sep 17 00:00:00 2001 From: Tan Date: Fri, 29 Dec 2023 14:53:57 -0500 Subject: [PATCH 04/16] bugfix example for pb_write --- R/pb_write.R | 2 +- man/pb_write.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/pb_write.R b/R/pb_write.R index 7dcba2e..ff9019e 100644 --- a/R/pb_write.R +++ b/R/pb_write.R @@ -22,8 +22,8 @@ #' #> ℹ Uploading to latest release: "v0.0.2". #' #> ℹ Uploading mtcars.rds ... #' #> |===============================================================| 100% -#' }) #' } +#'} pb_write <- function(x, file, repo = guess_repo(), diff --git a/man/pb_write.Rd b/man/pb_write.Rd index 4edd2ea..bec9ec6 100644 --- a/man/pb_write.Rd +++ b/man/pb_write.Rd @@ -45,6 +45,6 @@ if (interactive()) { #> ℹ Uploading to latest release: "v0.0.2". #> ℹ Uploading mtcars.rds ... #> |===============================================================| 100\% -}) +} } } From 6ff7768a3a148d6b6c7dfc58821bd193a8cfa08b Mon Sep 17 00:00:00 2001 From: Tan Date: Fri, 29 Dec 2023 14:55:05 -0500 Subject: [PATCH 05/16] stash work on vignette --- vignettes/piggyback.Rmd | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index 1e8e05a..253245f 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -121,18 +121,20 @@ without additional arguments to pull in any data associated with a project on a GitHub repo that is too large to commit to git directly. Notice that above, `iris2.tsv.gz` was not downloaded. `pb_download()` will skip -downloading of any file that already exists locally, if the timestamp on the local copy is more recent than the timestamp on the GitHub copy. Use the `overwrite` parameter to control this behaviour. +downloading of any file that already exists locally, if the timestamp on the local +copy is more recent than the timestamp on the GitHub copy. Use the `overwrite` +parameter to control this behaviour. -`pb_download()` also includes arguments to control the progress bar or if any particular -files should not be downloaded. +`pb_download()` also includes arguments to control the progress bar or if any +particular files should not be downloaded. -### Download URLs +### Public Download URLs Sometimes it is preferable to have a URL from which the data can be read in directly, rather than downloading the data to a local file. For example, such a URL can be embedded directly into another R script, avoiding any dependence on `piggyback` -(provided the repository is already public.) To get a list of URLs rather than -actually downloading the files, use `pb_download_url()`: +(provided the repository is already public.) To get a list of public download URLs +rather than actually downloading the files, use `pb_download_url()`: ```r pb_download_url(repo = "cboettig/piggyback-tests", @@ -145,6 +147,10 @@ pb_download_url(repo = "cboettig/piggyback-tests", [4] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris2.tsv.gz" ``` +Note that these will not work if authentication is required to download them + +## Reading data + ## Uploading data If your GitHub repository doesn't have any From 21a473705dc4250faca8f78e34f0d2d2c4d5a72d Mon Sep 17 00:00:00 2001 From: Tan Date: Fri, 29 Dec 2023 23:55:37 -0500 Subject: [PATCH 06/16] improve pb_read and pb_write documentation --- R/pb_read.R | 33 +++++++++++++++++++++++++++------ R/pb_write.R | 35 +++++++++++++++++++++++++++++------ man/guess_read_function.Rd | 37 +++++++++++++++++++++++++++++++++++++ man/guess_write_function.Rd | 37 +++++++++++++++++++++++++++++++++++++ man/pb_download_url.Rd | 29 ++++++++++++++++++++++++++--- man/pb_read.Rd | 18 ++++++++++++++---- man/pb_write.Rd | 17 ++++++++++++++--- 7 files changed, 184 insertions(+), 22 deletions(-) create mode 100644 man/guess_read_function.Rd create mode 100644 man/guess_write_function.Rd diff --git a/R/pb_read.R b/R/pb_read.R index be61afd..62d8c96 100644 --- a/R/pb_read.R +++ b/R/pb_read.R @@ -3,19 +3,23 @@ #' A convenience wrapper around writing an object to a temporary file and then #' uploading to a specified repo/release. This convenience comes at a cost to #' performance efficiency, since it first downloads the data to disk and then -#' reads the data from disk into memory. See `vignette("duckdb_arrow")` for +#' reads the data from disk into memory. See `vignette("cloud_native")` for #' alternative ways to bypass this flow and work with the data directly. #' #' @param file string: file name #' @param repo string: GH repository name in format "owner/repo". Default #' `guess_repo()` tries to guess based on current working directory's git repo #' @param tag string: tag for the GH release, defaults to "latest" -#' @param read_function function: specifies how to read in the data. Default -#' tries to guess a function based on file extension (csv, rds, parquet, txt, json) -#' @param ... additional arguments passed to `read_function` +#' @param read_function function: used to read in the data, where the file is +#' passed as the first argument and any additional arguments are subsequently +#' passed in via `...`. Default `guess_read_function(file)` will check the file +#' extension and try to find an appropriate read function if the extension is one +#' of rds, csv, tsv, parquet, txt, or json, and will abort if not found. +#' @param ... additional arguments passed to `read_function` after file #' @param .token GitHub authentication token, see [gh::gh_token()] #' #' @export +#' @family pb_rw #' #' @return Result of reading in the file in question. #' @examples \donttest{ @@ -50,6 +54,23 @@ pb_read <- function(file, read_function(file.path(tempdir(), file), ...) } +#' Guess read function from file extension +#' +#' This function accepts a filename and tries to return a valid function for +#' reading it. +#' +#' `guess_read_function` understands the following file extensions: +#' - rds with `readRDS` +#' - csv, csv.gz, csv.xz with `utils::read.csv` +#' - tsv, tsv.gz, tsv.xz with `utils::read.delim` +#' - parquet with `arrow::read_parquet` +#' - txt, txt.gz, txt.xz with `readLines` +#' - json, json.gz, json.xz with `jsonlite::fromJSON` +#' +#' @family pb_rw +#' @param file filename to parse +#' @return function for reading the file, if found +#' @keywords internal guess_read_function <- function(file){ file_ext <- tools::file_ext(gsub(x = file, pattern = ".gz$|.xz$", replacement = "")) if (file_ext == "parquet") rlang::check_installed("arrow") @@ -57,8 +78,8 @@ guess_read_function <- function(file){ read_fn <- switch( file_ext, "rds" = readRDS, - "csv" = read.csv, - "tsv" = read.delim, + "csv" = utils::read.csv, + "tsv" = utils::read.delim, "parquet" = arrow::read_parquet, "txt" = readLines, "json" = jsonlite::fromJSON, diff --git a/R/pb_write.R b/R/pb_write.R index ff9019e..60b24e1 100644 --- a/R/pb_write.R +++ b/R/pb_write.R @@ -8,21 +8,26 @@ #' @param repo string: GH repository name in format "owner/repo". Default #' `guess_repo()` tries to guess based on current working directory's git repo #' @param tag string: tag for the GH release, defaults to "latest" -#' @param write_function function: specifies how to read in the data. Default -#' tries to guess a function based on file extension (csv, rds, txt, parquet, json) +#' @param write_function function: used to write an R object to file, where the +#' object is passed as the first argument, the filename as the second argument, +#' and any additional arguments are subsequently passed in via `...`. Default +#' `guess_write_function(file)` will check the file extension and try to find an +#' appropriate write function if the extension is one of rds, csv, tsv, parquet, +#' txt, or json, and will abort if not found. #' @param ... additional arguments passed to `write_function` #' @param .token GitHub authentication token, see [gh::gh_token()] #' #' @export +#' @family pb_rw #' #' @return Writes file to release and returns github API response #' @examples \donttest{ -#' if (interactive()) { +#' \dontshow{if (interactive()) \{} #' pb_write(mtcars, "mtcars.rds", repo = "tanho63/piggyback-tests") #' #> ℹ Uploading to latest release: "v0.0.2". #' #> ℹ Uploading mtcars.rds ... #' #> |===============================================================| 100% -#' } +#' \dontshow{\}} #'} pb_write <- function(x, file, @@ -43,6 +48,23 @@ pb_write <- function(x, pb_upload(destfile, repo = repo, tag = tag, .token = .token) } +#' Guess write function from file extension +#' +#' This function accepts a filename and tries to return a valid function for +#' writing to it. +#' +#' `guess_write_function` understands the following file extensions: +#' - rds with `saveRDS` +#' - csv, csv.gz, csv.xz with `utils::write.csv` +#' - tsv, tsv.gz, tsv.xz with a modified `utils::write.csv` where sep is set to `"\t"` +#' - parquet with `arrow::write_parquet` +#' - txt, txt.gz, txt.xz with `writeLines` +#' - json, json.gz, json.xz with `jsonlite::write_json` +#' +#' @family pb_rw +#' @param file filename to parse +#' @return function for reading the file, if found +#' @keywords internal guess_write_function <- function(file){ file_ext <- tools::file_ext(gsub(x = file, pattern = ".gz$|.xz$", replacement = "")) if (file_ext == "parquet") rlang::check_installed("arrow") @@ -50,10 +72,11 @@ guess_write_function <- function(file){ write_fn <- switch( file_ext, "rds" = saveRDS, - "csv" = write.csv, + "csv" = utils::write.csv, + "tsv" = function(x, file, ..., sep = "\t") utils::write.csv(x = x, file = file, sep = sep, ...), "txt" = writeLines, "parquet" = arrow::write_parquet, - "json" = jsonlite::toJSON, + "json" = jsonlite::write_json, cli::cli_abort("File type {.val {file_ext}} is not recognized, please provide a {.arg write_function}") ) diff --git a/man/guess_read_function.Rd b/man/guess_read_function.Rd new file mode 100644 index 0000000..34480de --- /dev/null +++ b/man/guess_read_function.Rd @@ -0,0 +1,37 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pb_read.R +\name{guess_read_function} +\alias{guess_read_function} +\title{Guess read function from file extension} +\usage{ +guess_read_function(file) +} +\arguments{ +\item{file}{filename to parse} +} +\value{ +function for reading the file, if found +} +\description{ +This function accepts a filename and tries to return a valid function for +reading it. +} +\details{ +\code{guess_read_function} understands the following file extensions: +\itemize{ +\item rds with \code{readRDS} +\item csv, csv.gz, csv.xz with \code{utils::read.csv} +\item tsv, tsv.gz, tsv.xz with \code{utils::read.delim} +\item parquet with \code{arrow::read_parquet} +\item txt, txt.gz, txt.xz with \code{readLines} +\item json, json.gz, json.xz with \code{jsonlite::fromJSON} +} +} +\seealso{ +Other pb_rw: +\code{\link{guess_write_function}()}, +\code{\link{pb_read}()}, +\code{\link{pb_write}()} +} +\concept{pb_rw} +\keyword{internal} diff --git a/man/guess_write_function.Rd b/man/guess_write_function.Rd new file mode 100644 index 0000000..72ee984 --- /dev/null +++ b/man/guess_write_function.Rd @@ -0,0 +1,37 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pb_write.R +\name{guess_write_function} +\alias{guess_write_function} +\title{Guess write function from file extension} +\usage{ +guess_write_function(file) +} +\arguments{ +\item{file}{filename to parse} +} +\value{ +function for reading the file, if found +} +\description{ +This function accepts a filename and tries to return a valid function for +writing to it. +} +\details{ +\code{guess_write_function} understands the following file extensions: +\itemize{ +\item rds with \code{saveRDS} +\item csv, csv.gz, csv.xz with \code{utils::write.csv} +\item tsv, tsv.gz, tsv.xz with a modified \code{utils::write.csv} where sep is set to \code{"\\t"} +\item parquet with \code{arrow::write_parquet} +\item txt, txt.gz, txt.xz with \code{writeLines} +\item json, json.gz, json.xz with \code{jsonlite::write_json} +} +} +\seealso{ +Other pb_rw: +\code{\link{guess_read_function}()}, +\code{\link{pb_read}()}, +\code{\link{pb_write}()} +} +\concept{pb_rw} +\keyword{internal} diff --git a/man/pb_download_url.Rd b/man/pb_download_url.Rd index 0172211..757d10d 100644 --- a/man/pb_download_url.Rd +++ b/man/pb_download_url.Rd @@ -39,11 +39,34 @@ functions that are able to accept URLs. \donttest{ \dontshow{try(\{} -# returns browser url by default -pb_download_url("iris.tsv.xz", repo = "cboettig/piggyback-tests", tag = "v0.0.1") +# returns browser url by default (and all files if none are specified) +browser_url <- pb_download_url( + repo = "tanho63/piggyback-tests", + tag = "v0.0.2" + ) +print(browser_url) +utils::read.csv(browser_url[[1]]) # can return api url if desired -pb_download_url("iris.tsv.xz", repo = "cboettig/piggyback-tests", tag = "v0.0.1", url_type = "api") +api_url <- pb_download_url( + "mtcars.csv", + repo = "tanho63/piggyback-tests", + tag = "v0.0.2" + ) +print(api_url) + +# for public repositories, this will still work +utils::read.csv(api_url) + +# for private repos, can use httr or curl to fetch and then pass into read function +gh_pat <- Sys.getenv("GITHUB_PAT") + +if(!identical(gh_pat, "")){ + resp <- httr::GET(api_url, httr::add_headers(Authorization = paste("Bearer", gh_pat))) + utils::read.csv(text = httr::content(resp, as = "text")) +} + +# or use pb_read which bundles some of this for you \dontshow{\})} } diff --git a/man/pb_read.Rd b/man/pb_read.Rd index aad97db..7b8bd2c 100644 --- a/man/pb_read.Rd +++ b/man/pb_read.Rd @@ -21,10 +21,13 @@ pb_read( \item{tag}{string: tag for the GH release, defaults to "latest"} -\item{read_function}{function: specifies how to read in the data. Default -tries to guess a function based on file extension (csv, rds, parquet, txt, json)} +\item{read_function}{function: used to read in the data, where the file is +passed as the first argument and any additional arguments are subsequently +passed in via \code{...}. Default \code{guess_read_function(file)} will check the file +extension and try to find an appropriate read function if the extension is one +of rds, csv, tsv, parquet, txt, or json, and will abort if not found.} -\item{...}{additional arguments passed to \code{read_function}} +\item{...}{additional arguments passed to \code{read_function} after file} \item{.token}{GitHub authentication token, see \code{\link[gh:gh_token]{gh::gh_token()}}} } @@ -35,7 +38,7 @@ Result of reading in the file in question. A convenience wrapper around writing an object to a temporary file and then uploading to a specified repo/release. This convenience comes at a cost to performance efficiency, since it first downloads the data to disk and then -reads the data from disk into memory. See \code{vignette("duckdb_arrow")} for +reads the data from disk into memory. See \code{vignette("cloud_native")} for alternative ways to bypass this flow and work with the data directly. } \examples{ @@ -45,3 +48,10 @@ try({ # try block is to avoid CRAN issues and is not required in ordinary usage }) } } +\seealso{ +Other pb_rw: +\code{\link{guess_read_function}()}, +\code{\link{guess_write_function}()}, +\code{\link{pb_write}()} +} +\concept{pb_rw} diff --git a/man/pb_write.Rd b/man/pb_write.Rd index bec9ec6..07b198d 100644 --- a/man/pb_write.Rd +++ b/man/pb_write.Rd @@ -24,8 +24,12 @@ pb_write( \item{tag}{string: tag for the GH release, defaults to "latest"} -\item{write_function}{function: specifies how to read in the data. Default -tries to guess a function based on file extension (csv, rds, txt, parquet, json)} +\item{write_function}{function: used to write an R object to file, where the +object is passed as the first argument, the filename as the second argument, +and any additional arguments are subsequently passed in via \code{...}. Default +\code{guess_write_function(file)} will check the file extension and try to find an +appropriate write function if the extension is one of rds, csv, tsv, parquet, +txt, or json, and will abort if not found.} \item{...}{additional arguments passed to \code{write_function}} @@ -40,11 +44,18 @@ uploading to a specified repo/release. } \examples{ \donttest{ -if (interactive()) { +\dontshow{if (interactive()) \{} pb_write(mtcars, "mtcars.rds", repo = "tanho63/piggyback-tests") #> ℹ Uploading to latest release: "v0.0.2". #> ℹ Uploading mtcars.rds ... #> |===============================================================| 100\% +\dontshow{\}} } } +\seealso{ +Other pb_rw: +\code{\link{guess_read_function}()}, +\code{\link{guess_write_function}()}, +\code{\link{pb_read}()} } +\concept{pb_rw} From f0c5c8caeba223064018f5df3d9f4999d6400ad6 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 11:13:31 -0500 Subject: [PATCH 07/16] update pkgdown and ignore future local pkgdown builds --- .gitignore | 1 + pkgdown/_pkgdown.yml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4a03414..bf695ed 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ data/* .DS_Store CRAN_SUBMISSION CRAN_RELEASE +docs/* diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 9edf998..e6ffef8 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -7,6 +7,8 @@ reference: - "pb_download_url" - "pb_upload" - "pb_delete" + - "pb_read" + - "pb_write" - title: Create/Delete Releases desc: Functions for working with releases contents: From cf4c45e2981f782ec4743213a31cefc2e03f367d Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 11:14:51 -0500 Subject: [PATCH 08/16] remove git-tracking of pkgdown since ropensci builds it separately --- docs/404.html | 125 ------ docs/CODE_OF_CONDUCT.html | 98 ----- docs/LICENSE.html | 285 ------------- docs/apple-touch-icon-120x120.png | Bin 11678 -> 0 bytes docs/apple-touch-icon-152x152.png | Bin 15220 -> 0 bytes docs/apple-touch-icon-180x180.png | Bin 18306 -> 0 bytes docs/apple-touch-icon-60x60.png | Bin 4801 -> 0 bytes docs/apple-touch-icon-76x76.png | Bin 6536 -> 0 bytes docs/apple-touch-icon.png | Bin 18306 -> 0 bytes docs/articles/alternatives.html | 189 --------- .../header-attrs-2.10/header-attrs.js | 12 - docs/articles/index.html | 91 ----- docs/articles/intro.html | 256 ------------ .../header-attrs-2.10/header-attrs.js | 12 - docs/authors.html | 123 ------ docs/bootstrap-toc.css | 60 --- docs/bootstrap-toc.js | 159 -------- docs/docsearch.css | 148 ------- docs/docsearch.js | 85 ---- docs/favicon-16x16.png | Bin 1237 -> 0 bytes docs/favicon-32x32.png | Bin 2217 -> 0 bytes docs/favicon.ico | Bin 15086 -> 0 bytes docs/index.html | 233 ----------- docs/jquery.sticky-kit.min.js | 11 - docs/link.svg | 12 - docs/logo.png | Bin 69043 -> 0 bytes docs/logo.svg | 295 -------------- docs/news/index.html | 159 -------- docs/onboarding-submission.html | 260 ------------ docs/paper.html | 103 ----- docs/pkgdown.css | 384 ------------------ docs/pkgdown.js | 108 ----- docs/pkgdown.yml | 8 - docs/reference/Rplot001.png | Bin 1011 -> 0 bytes docs/reference/figures/github-policy.png | Bin 254810 -> 0 bytes docs/reference/figures/logo.png | Bin 69043 -> 0 bytes docs/reference/figures/logo.svg | 295 -------------- docs/reference/index.html | 118 ------ docs/reference/manifest.json | 9 - docs/reference/mtcars.tsv.xz | Bin 604 -> 0 bytes docs/reference/pb_delete.html | 135 ------ docs/reference/pb_download.html | 151 ------- docs/reference/pb_download_url.html | 133 ------ docs/reference/pb_list.html | 133 ------ docs/reference/pb_new_release.html | 139 ------- docs/reference/pb_pull.html | 198 --------- docs/reference/pb_push.html | 201 --------- docs/reference/pb_track.html | 200 --------- docs/reference/pb_upload.html | 142 ------- docs/reference/piggyback-package.html | 129 ------ docs/sitemap.xml | 69 ---- 51 files changed, 5268 deletions(-) delete mode 100644 docs/404.html delete mode 100644 docs/CODE_OF_CONDUCT.html delete mode 100644 docs/LICENSE.html delete mode 100644 docs/apple-touch-icon-120x120.png delete mode 100644 docs/apple-touch-icon-152x152.png delete mode 100644 docs/apple-touch-icon-180x180.png delete mode 100644 docs/apple-touch-icon-60x60.png delete mode 100644 docs/apple-touch-icon-76x76.png delete mode 100644 docs/apple-touch-icon.png delete mode 100644 docs/articles/alternatives.html delete mode 100644 docs/articles/alternatives_files/header-attrs-2.10/header-attrs.js delete mode 100644 docs/articles/index.html delete mode 100644 docs/articles/intro.html delete mode 100644 docs/articles/intro_files/header-attrs-2.10/header-attrs.js delete mode 100644 docs/authors.html delete mode 100644 docs/bootstrap-toc.css delete mode 100644 docs/bootstrap-toc.js delete mode 100644 docs/docsearch.css delete mode 100644 docs/docsearch.js delete mode 100644 docs/favicon-16x16.png delete mode 100644 docs/favicon-32x32.png delete mode 100644 docs/favicon.ico delete mode 100644 docs/index.html delete mode 100644 docs/jquery.sticky-kit.min.js delete mode 100644 docs/link.svg delete mode 100644 docs/logo.png delete mode 100644 docs/logo.svg delete mode 100644 docs/news/index.html delete mode 100644 docs/onboarding-submission.html delete mode 100644 docs/paper.html delete mode 100644 docs/pkgdown.css delete mode 100644 docs/pkgdown.js delete mode 100644 docs/pkgdown.yml delete mode 100644 docs/reference/Rplot001.png delete mode 100644 docs/reference/figures/github-policy.png delete mode 100644 docs/reference/figures/logo.png delete mode 100644 docs/reference/figures/logo.svg delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/manifest.json delete mode 100644 docs/reference/mtcars.tsv.xz delete mode 100644 docs/reference/pb_delete.html delete mode 100644 docs/reference/pb_download.html delete mode 100644 docs/reference/pb_download_url.html delete mode 100644 docs/reference/pb_list.html delete mode 100644 docs/reference/pb_new_release.html delete mode 100644 docs/reference/pb_pull.html delete mode 100644 docs/reference/pb_push.html delete mode 100644 docs/reference/pb_track.html delete mode 100644 docs/reference/pb_upload.html delete mode 100644 docs/reference/piggyback-package.html delete mode 100644 docs/sitemap.xml diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 076b8d3..0000000 --- a/docs/404.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -Page not found (404) • piggyback - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- - -Content not found. Please use links in the navbar. - -
- - - -
- - - -
- -
-

-

Site built with pkgdown 2.0.1.

-
- -
-
- - - - - - - - diff --git a/docs/CODE_OF_CONDUCT.html b/docs/CODE_OF_CONDUCT.html deleted file mode 100644 index f1883e1..0000000 --- a/docs/CODE_OF_CONDUCT.html +++ /dev/null @@ -1,98 +0,0 @@ - -Contributor Code of Conduct • piggyback - - -
-
- - - -
-
- - -
- -

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

-

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

-

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

-

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

-

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

-

This Code of Conduct is adapted from the Contributor Covenant (http://contributor-covenant.org), version 1.0.0, available at http://contributor-covenant.org/version/1/0/0/

-
- -
- - - -
- - - -
- -
-

Site built with pkgdown 2.0.1.

-
- -
- - - - - - - - diff --git a/docs/LICENSE.html b/docs/LICENSE.html deleted file mode 100644 index 2c3e160..0000000 --- a/docs/LICENSE.html +++ /dev/null @@ -1,285 +0,0 @@ - -GNU General Public License • piggyback - - -
-
- - - -
-
- - -
- -

Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

-

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

-
-

Preamble

-

The GNU General Public License is a free, copyleft license for software and other kinds of works.

-

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program–to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

-

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

-

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

-

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

-

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

-

For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

-

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

-

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

-

The precise terms and conditions for copying, distribution and modification follow.

-
-
-

TERMS AND CONDITIONS

-
-

0. Definitions

-

“This License” refers to version 3 of the GNU General Public License.

-

“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

-

“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.

-

To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

-

A “covered work” means either the unmodified Program or a work based on the Program.

-

To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

-

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

-

An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

-
-
-

1. Source Code

-

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

-

A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

-

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

-

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

-

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

-

The Corresponding Source for a work in source code form is that same work.

-
-
-

2. Basic Permissions

-

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

-

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

-

Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

-
-
- -

No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

-

When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures.

-
-
-

4. Conveying Verbatim Copies

-

You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

-

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

-
-
-

5. Conveying Modified Source Versions

-

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

-
  • -a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
  • -
  • -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
  • -
  • -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
  • -
  • -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
  • -

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

-
-
-

6. Conveying Non-Source Forms

-

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

-
  • -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
  • -
  • -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
  • -
  • -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
  • -
  • -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
  • -
  • -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
  • -

A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

-

A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

-

“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

-

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

-

The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

-

Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

-
-
-

7. Additional Terms

-

“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

-

When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

-

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

-
  • -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
  • -
  • -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
  • -
  • -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
  • -
  • -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
  • -
  • -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
  • -
  • -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
  • -

All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

-

If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

-

Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

-
-
-

8. Termination

-

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

-

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

-

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

-

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

-
-
-

9. Acceptance Not Required for Having Copies

-

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

-
-
-

10. Automatic Licensing of Downstream Recipients

-

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

-

An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

-

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

-
-
-

11. Patents

-

A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”.

-

A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

-

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

-

In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

-

If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

-

If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

-

A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

-

Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

-
-
-

12. No Surrender of Others’ Freedom

-

If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

-
-
-

13. Use with the GNU Affero General Public License

-

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

-
-
-

14. Revised Versions of this License

-

The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

-

Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

-

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

-

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

-
-
-

15. Disclaimer of Warranty

-

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

-
-
-

16. Limitation of Liability

-

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-
-
-

17. Interpretation of Sections 15 and 16

-

If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

-

END OF TERMS AND CONDITIONS

-
-
-
-

How to Apply These Terms to Your New Programs

-

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

-

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

-
<one line to give the program's name and a brief idea of what it does.>
-Copyright (C) 2018 Carl Boettiger
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-

Also add information on how to contact you by electronic and paper mail.

-

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

-
piggyback Copyright (C) 2018 Carl Boettiger
-This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type 'show c' for details.
-

The hypothetical commands show w and show c should show the appropriate parts of the General Public License. Of course, your program’s commands might be different; for a GUI interface, you would use an “about box”.

-

You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>.

-

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.

-
-
- -
- - - -
- - - -
- -
-

Site built with pkgdown 2.0.1.

-
- -
- - - - - - - - diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png deleted file mode 100644 index 2a5c876d1df1ffacc843a96053c7526639ca9cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11678 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

T}oUn*n4)T(7 zZsd5Atef|>Lh~T+?TR;tDKy3yySksew2ebj0bRujTwaWVa$rjx<=n7T_iabbcQ$;I zFcF5l_z`HqXw^T|8*@CwxkW`3Y(j;Mv}nqfp)q%u$?kXg<{{J2mC}thkNN|=3N<`! z$=TFDsUe#ob$on#j8)bGXW4sgwu0*?rE!<`MLbs&DGMxx_v&(zL{eV3Z zA4P+0C`e!F$VopLPk5K4y+jwzNK0(dIBd%CdcXM(<}GHd&)yh*@;#m4qraUx zc;@4M$9^dChjzkEaaW|7@(LV8r^rBV!NAJ>D&kl7a~=NYpF$z2Qn}EEsD1e@sNS|b zy*Eba2g(bHq|MsygTjKF^KRk8E%4@x3vi79Lzxfk=tE@lp)Aw;Eg)=^AQlVJ{pk%p zAI0*wH}R(n=-y9(w?V*tc=R-@SRw~x5WQhNkd+Phdk|UNhQ6crXQC13iW&t1?~GEp zNNBs58o8M9nK+pN9}sLHHdZDOFB6DIosFH3jhBy&g8>BM1A!jY@P7S24Q%aAEzLdt z{|&-X^6-HMTAu3KE~-ZEqz+E@=9V^Qq%Ix~W~7!5E+!BV-?MhEkl+CZOgpADJ|VNG z3IR=l$ZUd$Nr5Ss_yro1RNSAV-xQjnUY&G&@z2P>!~o#{+_=B=Pg!P&BOG*>D^bp5 Q;1Uor5{lwgqK1M02QqdsH2?qr diff --git a/docs/apple-touch-icon-180x180.png b/docs/apple-touch-icon-180x180.png deleted file mode 100644 index a7dafd3fba4991a9484b2354afdf0cdc9cd7aba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18306 zcmX_I15{>hxUH$lu0PvNlWk6RO}1^@m~7j&ZQHi(nsm?HyVhOdTh&?TobNpk_OthX z3zL%(g@?h00RaJl7Z(#&0A3sZeL+D0-+3k>7=agX69H)f5Rlqv*mu3}z|VvRVhYkA zAnxQKAijYhAb){h`JRA)IMIWEoausqaHfEOVAy7~$#VmLfY6r|6$bhG_mR_C91r{k z(otOc7vv!{6b2r)T9!lx2#5%YxUhhd>)K_ei>u~h*V6<*&o?dlF^A~?5XwA)Mi{e8B#C~dLnVBJ^hE$=zVx_LBG@Vk zbS^{GZ6Fpj2CG4O!MP#7VYkf%S7fV;*282#&kezfiaRtF%#&n*eqpqQjoG}UqUmAk z@q%i_pfbEyZNO)ZKz2`wk+)~UMuEoaiR`(gOr70k;RWaR{j&xSVlcq#4IF@p6pN_5 zgR-;UKTgG0x!RyBw$w zNL?@_?C_=GUXbdFi9SeV$|&G z6-HxVG$B3lQUthHiKW4`qK~aeYcN^}T(M0-1@5~jWFAkWp(2nuWrQ8;uv(A`0_iV% zg2*R|9Okla_0ksr%LB6(_rx(IajsDX(*F=jT(ccg?E~v>^qKW zNNt#bO9XNo4)I-I;24PyY@$jNJUeAsJZe1BDVA;{{1a>E?laN4dSVws$o}lI_YRLz z+BFX$y@+`bgCHtVoiHJ#!0#7p!Qbx?K{XWo>JY>X$brEU3b9;1U|haTT@l_QsGRwZ9Dy$n{m!r&@)l))0knIUCxfsC`y3udMuGws$)0#@=@rX;jq@#Jvg+WM zK8h(slp4izkS*rwMxdq5??mBpcp5r_iKG!!a5217`yW_)cEfLDlO+=SA3eNNNM1Z= z(3h00RPJe5J@7p$SSw4b-{Y}jlY+%$BE|glNEv;%qb<$lW}9(@^-+k~5aEKY5n-T$ zVlppBnpmM;_Pvt9DAUhS`SZcmMHp&DS#sM~Ig@k87Q-Fh20^Dnc8i_kf8|IHDdAbkPuLYhcN|Lm3$C85L}UFI$R!*J(N(|G+Nye z#+KY@ZdW*ieofa%o_=c|N7m1tX=VY}8*fD=$wtW%|nyZw5xLX=)m^x^muJk&}Z;ZSyRI1m1 z5Zne{8J~B6BnG!bVXD4}j4z5)oh4Z}W~~G~yzxss1iL2|VoHr+!kw65p-E94y)|o! znfV3Se4hSxR$|tjfxtR{E@y0W5My0jr1bh=-N6|hV8#8C%)kapqro&KDwOdzzR35~ zQQg7VP#N@9WH0RKuoG3H!ar$`PK1SwG;Ta#I3JV7hRU?}N3zFP>vYF+-{VKcWeW(o z5*OF0?cBgZ{lv_f%iMeyqh=mmrDP#;Fk4`LlkvbYuizQY&DZS@Xr-eDB8!@ej@n;D zse$YxdE&kB?dU798tAJ2gc3#Xiw$E(N1c^JLLf=UiJhFx3F*BSQmy!rycw+`w1!H5 zbmTBecK>o|mCWcMD06|Xo)90rX|8`6^~0aYYo~`AyiZ^L+K9Cr=3r-01ePA>x2XgK zf|`P{6S?v9z&y8oD33nWWr{tjvnW;xt?+Wb@fjQFDOhwwLizmMY@IzaG;;k%m~c z&x_(4FEoWE%%=qhq5U6PVjmlKZXdj)y!q7C2S$$X{bxh7j&$D_!Zu!mj66@v+(=d5 zoA|)+_wxh?KW?1)i>p6t7>><)Pl2Q>II;9Yj zDTmsu^vlI-!A%V23h8CU5TnOLrYfZvT3RK@I|swbbLZ${V5AB<@b^5Lq|Bq|O3dDH zM-FT1jc%PhJ&gYP^u0WU_k0c>RAOto?}Xg$JA6cpT-Zd06Sge7G{0kKC+q7GEwPrR z1EXd4f?+C_{+D>%I4?Ro2uj#yz8>ZSOQ{JJj`rqj;tW4wA21cVriQa}!Mgj~Tz?LRk5uUUj8m`Ciw#TD(BLZ-WXaGGZnZZc|^th*+;G zIh+NI=qaHM!_UrlbpNV@-O0O5r1I0qS-2#e77I1-9tJu~wPIPU;RY7T^2fd`my~e3 zj?}Fpr>=&=iL$jHj`}Kp*{TPr+b+{hJSp01>4;u1jEf%4}!iJ0_jJQDO zv(=Xp{t#G>rI{Ql5-H^A*MkZ|Iz=eh-aZbLQ@6q#IO|@!$w21-_6U~tpYJ%&dO*Y$eRAVtT2Be%#~#^ z%QI=hTxL14^OqCUNu?9b50u@|CBe-S%g9w0v{n{6_ct~I^$(f{t_AfjTnH3fc?}Z@ zY<1@-M&!&BPkTh+cg)Dg&dFcBAf{<^*I8MK{HY02f_g+>PMgG6?-#!gIO04y?alKd zBha|MTrH@X{?v<0H_Tn#*-h75xVboRxct=VOFT|`NS_sxtYfg#Bn%#ZE(QycuqsSK1I3|ptEoR(DY?2tzOwt7Le;dVawlZrZm+T8s^pv&#Lykb*+u$VSul&xAr%v|4ds8qQ)d7Gy__*nTW zZxO3Gl3B*FzO<_q`7=(3nidt&1q~2Byn;wF(}qtE`k!~17VH*dEiEG#x8L0k8l@{X z6rzgEerB?TITS}npVK4an(a=BZjqxcz4lHXD{3!`I2jz@o}T6t0S!X&@0#vK91$1^ z^kRcasT@4X7%Hw2Z@R$|^!zeK#0-GLp#rgtjyrG;<)=*OGjUIsN{tT7vM|<4B?m^D zlnoVyI;?DC!$wIDjvY4V)JWGWC(=^p$Kz))&NMRL-)o;$J3HgJY&t{7(WQ3%FqY%9 z69wgE)_jvK7MoyzbaSCfPw9WQ;mxMn$CH{G*PV>|v8L6ZQyd*!M0D{qGWO6i=lSh7 zVLNyVVguB`F6wU)0_P?Gtn)jazeA5LsflznO;zA7{@4*-G z3d_R+v%Mt6ZT~dgemmPwVlJN8;jIn9)j(VYl)uUFTw^#dTLCtEuz@d=$#h2EX1qZh zrBI-V-F0DZg>HtV&sDAv{(4#N9yo{{4St8?#`lHgM|#nQ{CAA;qhhtS?jB^Hx~4DU z@SB!ptbzDZ%SD{XiAU)mxJ_JR*dZD^h&Z`;h0VIM=@5M};pSX#J|$|`JG|22KU83W z-tO#gl?g`FwpCq=zd;)~TEQ8Lu#h%xD$L19mClyAz2*I#fUg=YK)}FL8OGYiH<@o` z+`sfyRf?y3x{cP&>jTvLuGxhWSiEVz?gamfg_Y}KbYlgz?IB5v=emLlr1Zjb*e&$g zaSIpRqqp(tO35TA`ak_B`)j1uN*u05L_u~bX__P+5O6tFOjTIU8D*lD&s{QSJ8PG+hmtrlg@VC0R*JAAa{Q=0CuPUNrV8`05u4ejn|$x5e7on+&6 zqaB6jffa&~&bQR3y|(5ZnEE4vK1DfTI>W9yKPF4y1?fXSG2K;@a5|{wl@*0f)rMCmiVJ=SI$CfLqN3DdpxwO6((V;EYfrpXY~5=HkpJrd z7Uxgp zz#o53q9dYq+6k6LkB?17b$GE=VR@{qLX|X^yU)&DS8|Yl4CN@{F^LQ^-A{;#TvsX*|ynC zc$n-rY6s7nj$C>g8)_+x{E8N*CSfRwQ`c&Cb12SB(9lRc$0UHr27pHreRjuteOmL8h_*BB;C4Qbc6gRQ0*q%TH>-yu(nKivnX-@`1BI6$lrpr2t9A z6l0G7=8c60Dr^r!Tn!SN=y1n9cAF7A{+~}h2LBprEjs$`paq8geVtmxsGdrNG0 z)!-=NSDQb^^40Eec4v&}=XRqQ)$9HJIaKi9FXHb)oYP(H0bkEOI6u?WMznNVBf{KH zH$HFc8L*i@AF>gl1OIw|eJoCTo^PqRog7BKyyq%P9$nF=BCD;My6yk2=C_h-#adhz z+B=ycb~MH!w2!%Cf@^RuNUv1PP|`5*L?Vw@r{`3q(tvt6P^yz8zx|k|ImF54PX1o_ zTCw676U^GIZZtPNa~X2hy6?w!`{Mr(u4FJ-akGYp0SU_ed4x_Hmx^ld9(nHg_PXEA zw^Q2Oe7k5dy$h={)sG)Gq+B11HMq+Cxuh&e)EP1?Br!T>mFW3QXLHj#)el7^BW~v; zmoo7~U86$c3|`ZZ$9HbQP8KC3d8T-7i380PyU$$6z4N1bjvh1SG*ybrg0uT|?7v#e zz*WPX0>b#>?JbeK$&Kh^;zqG*UpdLK7Z3HX&C8hABSGz0v08`~46V+ma@$ z8)N2TY=(66yffv+Zs|uflr>%cgQHUM?bDoiNFIlPIDxCJNS%V!h$NnE&Y#gzrUW3#M=_?NyS!x9j+K&%b@CDbgQ0TXX(W2yD(bXCZHt-&jo#^ehBvd~?-XaZr{K`hhEtPK6dv?zg{-zbLrvo0GhZ?fo;BI_Om`eHisJent{Tcdscys!2n1MBgOc^vK&vJrUzgUVpk8M3($#M4 zGVASOIR+3DiJc+o`@|1Joh5p}cK-7)2%F@_w9YQxC63Kf#bV2Mc{L_*l@j6wwdrPdlAqP-=?zR@1n?B+wW z-F3}!fsWb@F$nSzjlj_^spGpv&Y2@pV=e?(OO>B-s0DjF`t0P zSV~lCc}r!{bbdPU#;7(Ir0--;cVWfL11jx>`2LE0PSQ2+4Y{9ON_&?**0BuT30t4K z6wuX8?iaY$ZQb8H+6yzbxm*7Xu|A(HjrU{biqZn19EjxD;`x4!N)6NyJ#%?<#I6QE z7uLl4N!hINy4QG!h=ed!CLJJR-p|6GORdj#HYX1!=q8T={7Fttqc`(RHzKhc96t7v z{iahqzfXa?v_IAoA)psADlr_=Yqem9=;hxRp<>iue! z#q$#N_$J`+co+!c75AE`?#`w#=j1z+XwFVge+H2g?;JCK={E~Ahga9L;cR_-ZxPM? z41B(S_!ZtG%62lZ6bOOgQ+POulbWjgzil7ycel?Rs`H#}WJAycD+RV70GskiBcrX; zoo$QTb$T|0;C-{)yduBVW7Fjc{p|S&1D7_$^QAd&5a-Ig(FO9%*PV5}@yr=AG~%fV zknV&xkU|@88=Tr7w%fkbZ>Bo%+pX6uaTn;`E^mhk=!S7=riYMh+0y{j!}qa(twa2B zax#G2_PC+(zFz>4{}w~1XU4ztAPLS~J=~QKt30);$x>F_zn^VxypF8@%L^_(5BUn! zZ}fVaoGu$JDL@v*H?!fLF*wh6VOxKFNOIp_Is5B*NzoyK4b3^*@k0qn7AN1eDJLcT zH>i%#(gAwqqsKE{y*3FhNw zbXnFZpiwcnR(uy&*xvhcXZeiuq2?+LObx-tM_oL=x3_j+04_{&&D8D0T_S5e4a?wb zPpN1Se!{o@$4qwk&0r-X;F3Jp@#nx$BX+d-LARP|)|+Aj*maoh%g+8CQzA-oDw8+s znvO5KzBqC?2fE{v@at_r0^ifD|8yPa5FALBVR(V``SEIepKKPcGFP)pZFOSmS|PpF zX{g6!bua%vdqSQnTFEOv$$7nIrMkR61c#i~X{U@C7+l8Kf!GWnp;Oolcp6gekYKnm`dz=ql!>0wIbE6d9lrbQ4wIvSTn@x zvc&5$#p|*>o6{RGV2wJE#vh9r+o>Uc>V^U}hxLNPe^P(%-^dz+DHEOD%*#2Fml|YP z48J94*{~l$;g~Q&1+6@l%9>??E^Q>QhRksq=2eCF03pcS)K*ervk#DqA?E5Fa|;4O z<>9Q!h{o7RDqQ zhR1H`Gcr=q1&F(Ks!S*?HQO!Em%p0Yz&rT3_m_4h6n~#G6%298ToA^=n9l5plr*W$ zVJ2vAG~wf-BBRN~cmB;>=RJ+gdRe_ICrvGVY2EROlq-g#3S3h?F7l!QoH6dQfP77? zCY2rwUW^KuAzQdX)id#dU~9H&HsO z-1E4^^&cfi=u$)h^_ClXSv zGyl)sn)1dLh(eio8ga}&nF4@R1_12=08cU5CcS7W1QzLV>9v9g8Hj#hro~?0R9a}N zvz|uQR<92^LSVzA<-42`aZX^XvAagTV^pN1I%z!*ncqLIWox$mx<3boxM+^2sJ;?n z$AuRrxrRBXQGmwmvY-4`rNtdd>M@N6k+!zk(RqqAUAZ=R^wH?p@>@+~UO13jtD1&6 z(#G>nlh0A7)@2Dx^tT8zoNthZiNWbivp&1w6)DLg{5>aqw4UZ+*vIkA3 zIcX(ObhDy%;pt3E=3SAbFCcE`HFiGplNT_hN^B%xfoO2n!kM)Q)g}f|I_gwiO!T*)Zx1+wAjh`FU<|?;(6B zr)sj;Byr`ThevQ#MvgSw5X|mO6w{-lvpO>M2ZH>laQ^5)L4H}pARQ-pS(Xqj%8&yb zLb^mrD=*OwYg7s=TR@~P^FvhK)nqtAyE@^i$oT$F z1Zn#8M&MJ`4LP&@tKAe^YZB%20Rr>E2i-^|6~pW42z7h;BL>6@r{SMSK}vs{YbPf^ z`zHbVf&0!QjJyF~_CLXym7_fZ8*355n36F=A43EY7?#aiTX#@4ZOx&08ygZ_UI#Ir zJ&aM99s)SUg!Hk%jR)0U5{}-!KCGaB184G7_QZcCvZwNJt7@}7c!(XN-CNsXbV$Nn zLtc8|V+44ME9wJU7-UWtvI!@mJk8aAh)a$|bR=0{TawVDW9)ot`Es*BvwsI6$~PH!It=-N z+ro0i!;rr&0__B)39ll*sWl#;3`s?}bBZa|JWkLlDZ357YQ9 z*L`bKGl~wWh@FDwsn#Lw6-6Ex1fNA7lD4j%01EOy;DAA+ARgWVt^XoD-@2BG4S6T? z7H+eA4zPi<8?WcO|8bZH3hc0{DtbL~_-N>$C27UD z;{1(q1>JDZh>Yw3aEym1eP!lYeMftpov^4emC?_Vq4$MN!oZz=twqn%tK(L;RZDA4 zbrAt&3DWsI00xNISz~9nnUdq{#K<%gMDy_zVip0zLU%_^mQ#DVET0+*g$P+LU#lUf zNn*tL?FuS&)7@3l9kRG_nE8M;E0(x)O`I+ZGR(PS%LjXBY@aOKH*97Bq4aPMV8j8k zyMGux$$r%zi1BMeqPpL~3m6Wjg0tV~3f05fgEtHVeCB$XiQI@snJBJ}X zcf??$yBnQ^SrL;J^jXqdY^@no=rYC@`lJ9%3Z&~AI)z1(%3b#F_L35dbGxb8FM<;5 z-7KG~!&4{u=uKz^;WIh;rL@OCf`2YUEtvrjMkN6>Y-lndj!q`>( zwOiQeQBr1u<7XHQo}S8Ot=VTnn~u6Z!24%!gLx`lzUTLG(oJW`mj33|nf8AJCmhYr z?yf!-9MsLqx(qntO&UOe9YyPO#{pc59l`u*RIJMv9*9W3A6fk$cV;O|2X{A*`CQ~v zx0%9&GC)sz|Ig%+*ue$p>qk-PNij*L=gqOwN4*-+#XwyE>w;Zj;r}udFt+@&-0=WAg8zGL+%|$P1hL(IEki1)&C7`98D@ z-a=4r`Rw4zMEM>#QZXh`&^#`ZpI%BUJpQZ*fxBymL5Y`4BtQ7IWUR{25Y-D<1gMix z%yXu=_Od&-)X@}ak^f3XDf3EOhFCEkD`gHdi^_>6YZGn@10|1T^~YYa!fnPa{;|6x ztWXiy@HBxri>HS-@|RW=$3{D1wb3IDS~|z3Gt3bX(k%5HL!D}UZHA*4#9bc!D3+UZ zeoizpK;ax8`Mk?M1H+_+>e)xEGt-fd9v(I+rnk^XxPv>tUBYlIRi4&ttO?xS^yc`! zN>#h<_95{3a*eps(Cs|%Urw9B0ur`T8X%QOaBgaSq|uO*j33FKIk=QDeRnVTu9iiT zdQGF#cirv&{TGK>?e^O@bGji4WlNmdzgQx%!4NZnLqN}HN?xuvHP*Yh{lx?eU{t|h zUh6sGlA>S*5v)lGDG?BV>J(cYKS`}yS|ZGX)Od((%jd@lzCJ*GJgiXtbWI0}KSch^ z4e~{3&i*fUNmV{#TEb{|;@jA{y6CU&1Ji3B-z)qN)9Vi5^wf+8Qeb|rZK((aE=4sW zbIIVgP-uAW$LalifxWe=iLWuiHOEi}1ur34y`laOnq4^lW??q<2bTP(HL?BXdp`*S z8GOlz1*17ygd`cw=pXrc`t%6Wm5Bn1)sg@6Rsi{QSR^Uk z!!kJ~|N9$(Q{WPFZ*H10>jh6AP%(z^vsL1T4?H2)5f-CI7Js1Bs7H9d{SDf%mB$KW ztsis8WR6HXGv$;Ee0&MGs5IYObb51r?Dqm-Fi|YYojP2gyr`)h(-S~Loz%{8F|qi; z9--BL$bFRZb{P04pa5kdnl4SmT0~)EA7QECZmrF$VpV?dN$9b`(G`T4s(bdAF=k;P zdfHAv=Asg71CyPm`^Bx1i8RmyEpz*M?j|JCkeD0VTz3ZHf9kM?1K7g7Kqre1DR2IA zI9A_eOkVpY1Ze(3)t-UmZEG|U#t{;NK=99RjGkR4@<8!;38FJm9Mza>d=Ex8rGO7| z`urR+*4Atf0WarR0%1gg*+&d~>7~JVAapEVpN_hNVD1goba(!V*=T|V6QovqO9;3O zo>b!|`|9e+qh1i38|V9Xhn&mOIZJGu=H^ZX1gpKh8YeTASQ@gCOUEcho+!9x!p!_9 zA8AQ4VEO}=I}loAt3$}fHFo~YlkT!$8|p!Jhe4DaRT&wr}BI! zEf3D_i|l(Z^!;<`)1Q|AO(!8ZoF|TNP{IAR=q-W|o60%c%gKbXwZx%FWmHn;{*iqd z%s?c@#_1ZF`~oAm;*9X|b5Qrab!>1%mh>3mcQjn{=fP#%C55(rwaW!{% zgD_4`o4q!p4+_8`Z<{=X3obj+YSE{*TemYC@4PPjVmh^bEipGW(Q#t(C{JToT9>eL zpa1~BW)?_SPF>Aetk~A(pGtBgY@qZk8j@1g(fk6ERNM^^#64+C3XMI)P6|_xF}g(DznwTN4v+hyjMLa~AQ2)YdD1td16A+3r=W@>Q|bzzh6nmWEai zrTIUYhiZ}e3}w(X!j8!$V89&DE)x7cVF=86_B&!sUNlCtPNM@Ij_6X8*S9Uh7{XBQ zF&mc5x=}G5>}-+yzZ_BXuNd`2?3{r!Ye_IFTuAZ$&~m9M3Mz7b#$q7~l$SA;YjXx_ z+nGA2!8#-?QH$XgX_l9ZXf~cdscrAY9zLvfzh35-hcV0gI8KUu#xHRJ@?RXK2L%+d zX{LkLzj43^C39+MN!EM6n>xIf*w_K`=hRi12q5-vzdpFtE`0~y^Z1c8z&n&_SCbSP z0y8(qDGvtZHKh$Okw*RPxSz#*1j>cLFD;yNXO;UfvU!8(=~Tujfb<4tw@dlYL=**- zpMaEJI(!b0CpUAD9#qv(Qoh`2oc6gQ+{#k`oZ(imXJ% z!xj~*YQLlvO{C5xr~uy?d#8694wrkuT^r|%3p6&?D|Omx=)1a==62Jy`o9 zT6&A$+PcS7f*mP^<7Gb}ox57>3pCyoPrXxh;;@jZ~Fa2_z-A!>iL0sjKJyb zkt^eE;H>pgpXkF9<$wv7;Oo08l@(< zC@kINDX`0}nW84R$}in?m?O?Y+IfI*wVT8TXs4JVP9AS%n`&(OVcs-55n)p~@-KLg zXxq1IoxQzQRB?$KxED{qF$Nnh)#-793!c;Aax?#9mFuB>MEj=&PfPT9UltV57B7LN ztCGD;>5!?CGhLSqhCql!9d8@S?*Nb+_|MA2okQlTR-`$?!+MccTeXv`Yd;Z%rw;lw z^$*jZ8Ttl94Y=Fae)z}FTTyi)@L;Co@g6Mxld2Cf8Ji4*;Z?1px+_u_yfJ65k$KkFt{(=Y?GNH@tf7tu^?ne(OK>rGnjCqi(1d!CWfFTBe z?*)bZ{a|!fzzffwf=_!6)~m;fPSL#3oN>`77HK&Ptknf1Z{8CP}SU*gx~#; zY^=C@uEvJq)pz5?fY@H9%^Cup$O5y=-NE|0skKYCvd*U~eOYl|o02y)m62io=sZrG z;`viVS91jZ2owoZL=6<4)+DG_Ijdu-D64DqMLS;W@9>efzUq%#qo3p?GSPermM4D` z`a~bw!@IN_+KY=GH5Vys1B{#&?7G2`9^Zn!kS z=K|@0$YwXY5e8`ULdCTl$z^rR-Ju@OQSFc>};HVH!P+g1_!u(zi&l zLksw9COfy^F##FYg)LceePgtkHZ6=pAG2+DPYsY^s{yo41_E$REyqveqcXCFz`V-) zIB#;}Qub&25o2O!YFb;&xJVrp68Y z1C{KfB0^vv_x+Uf9g|{<=@s~UFa4L(^Lq)+H_xtm=$vRoC&eWJFIg^J>IS&ya!|$&Uy#JnXvGagBmfqI}75-Cq z^^fs>(W4nZKK^ulbGMgP`E6w|M`ipvX+hd^?E9#ct!gpeJBZ$F!v4l znIfW<+jjK|IuG{tEqa|D+z$fL~1ASfPf1O>*cE*_W9dRT(qO3~+^{8`9NYG&v z6&!i1raQoFcYpB5N{Vi5Pen%^z`rOCxLU&?*^g{~GHU6oVR8oyr6kq%gjB1cPZfe!BK z{b&skcD!pYff_#d1OPn~of?BKL$|YK;}ub{0FFNSla!jp?`%jWY2t^z+Q9lHpnL-s z6j!HBZ{RVrW+5b3Cr>IR$Bn*Xy-&l3Q;v!EU&7z4Q>fhbrM>(}3J{biSpQy0BNpwU zdVL}kK4ZR@3-+;1KnzK35lwh*(R+;76mS^@jLrDok0iiIa5EO-;bzeJHwI989LS^3 z=V5<>man3bQ1r}STLNSs48RuO%t+#xIXrP|OQTL?#^Kxxbhqw;&{b}Z_okuadpn^5 zWVQ!ScV1QGqemI&BDH~f>{+tiQ^T#Ql*BYJO3hmEVfy-XHpjcLCf7HYrFM7SAxB!# zf{-5?#bBt})muL!FJ1Er>N)=a;LyRCgT#mv>28>1UTUoVaBQ3}I#JtV#oiJQ4#LgM zIDx#{vWSru&U8n8=6~r3PwFlyhD`SX>C=G1fd8qR;*tFpGpu5Xhrjjebta>&80p9n zqLqa}BUsK>4RQtA^$qRmm79ovITr6ytQjXZ?T?r^SUlC|Gd6e#4wvcqgFdrqU?1mO zS^Hm`h;gw$7b;#4gK;YpBDk?Us-AvGkYyUg8az;d{$ytEGR!?|9G%QnVAi)K# zs%%zBY(WTkmB;^8#sEqz>Dq*0!3uCP!1mxUEG?PBWrQovDp|eEfWz{W91I{`Iwq=U zKL{=>dkNqkSJpMI4NL+~1a*B?cvr?h=qw4*UQcRfV6*jUND;=c#*_mezVSA5RL=lmB zgIJyOINoRdQ|sar>+uBsmgr+x=^ASnmc&@-Z8s*^R3@_IQDpcoz3EuqXS4;f%_lbG zleV#Jp@m{1fV;onpVk}!5K@d~vprDKey{&f18kQv&2+5FkwhZeRJ|Ax(Kws;yQueb zqtjBnP5f&#HK(Fwv6GQnhF1hKJ9cQ@S73&LE_Qk&@qI^LvU43@;&>|vp71T8u3$Ha z>@(LwtZ>_vu`aI0SA%_-VuXtjN zcozdW$ZF4~gt}$B24`2GhhtNb0Ug!;xDsPm3~z5pQlW3Azy!$^u?6deZifUpX*V|p zD~eeRtIT-_W>%k5sB>JiDG8d|`9fYi=H2dLC;WNrnd>aEVV z%o2BaUidnc1@(I*iyCw+vqS$KC+N;FM=?9qyz+13+?xuPaJ%^bN2NDA@$HT&(c0S5 zMSgul+}{6txH#3|5GxyGRKw20ODa1pPf=~YT(}XAKA(=A4D>uqz5ZY(Ag%tfpK~8X zZ{{1>oUSn5*KP!zFTAI?&6K6-Lx&~|AdbVGu_%k3n(FmW27dzChNyzn{^mLPmQ`@N zqbPJVXlKNcw~a44dgshz>8;8Ht_-3B&I|d_sZ5zxWo9GPrUh&+E3A$r4_0`QmTtH^ zr_&jG)A*5+kUX_IuY?#GtgMnf{*e#Rl97*Zt-E=tfO-xnx`T z=8v_UeERY9n~e#;K!Dfx{W8kJ?Cge~h^=xMyZT3wN)ZG&-l4bt@YdA zD}dII6@F@ty_NyYU{oSoEbHZ_mJadpSG|Xi@z!-r4uY&-AE);vW>*JCM)mDxUsaMH zQ$<3aS9h&w$3+alr69kKu>td@FfoV6nX9&DeTYZ4#`672P)=P{W;WjwKH~c`3t+%; z7$>Xe*qE6TqI=G)hsZrJGHH)X^5b6?c!-8b=x_xgLLed&iX7>zdb5j+%5mF{Z@~9N z%Yk`;zPTOo7+3^N9wBKm<_ZbO-?Bzp?e6-9K}|^hXG6~aXh73Tr8$EPl2kwd zTLBzT0Qd3a<|zoJ&dJ@;T*&>Ts=BP!S{cV*bDdGnhp9jA$4Q%^F=0ZNjuYMjX`%kl zeQ=_1tSe1T-TeDojA8T5sxa@hXcx?B(SqoYJn$)SFUg+1sP%tgyGa}** z-41Hcv#-#kM>e}PBN*Jdwn^ zzmnsqUJ8 zHLb2Hx-=v-DzNY3rw!q( zHPNhb5wQ25ljiXKZ`kh>g~POGJnN&($-@R`_t`+*>s@02kAz#ToWcg0TDsKQ>A=%f zZT80&A^a2}`Mz4p?BcqjwL0RFK5qBskIOzMNQg#`1f#gT*JsXJ^Qfz(5`bR~xw_(O zY37%cEg-R?r>hk>-~x6iW_bU(PhpQnF=4cqQl~lSBMu>9u#J#_@RFtQLy)4FaBi-5 zqw$IkZK?Gx0|mczA8ReRP%(`|lmqu0kq7~%k({RqJ&dNX6;=XTDIz}TamoIFQk zb7FX_DzPLXB&eX4Pyf`7x5;uK3@q1l#v}PWlAM#xMbi_L#M*^mII-Fq(*ti-+B zyXbN`1U-#R)z|3!1=mJIQP|3xG|j|8tImcnAk9oyZ%r z6$W&~ah#LG$(oc1Kyed*O5@si`9?G$B6I=Ry*fj-i7O<5=4>X;YKe~e$sg*R%vJ|q z7g_*AGE7948`>+8M=HjwK^#bkhLHdEF2U;DQ0~k8lKF^q19HPY0x@H{^*m5>e-)S- zpSR5kR6BHNAM_un_Bg;s=EY+|A|>d~N|wCpd1NXoWG}A=heevjeb~LH?`=aD~_IS|=Q| zd9csy2J}ChXP{HqY{?+5osA9WNIZ2Dvb3gTf_CR#1_~{o2TX3w7D?F^rOnRtbal9y zJrx-nUHYKaat7XgOvSdwB+v==u8h&nyO=?u3YiqRtJj~&!j*hAG7 zmq2=p^kzl^b_-TT0dOQPaw<(kGzdv)Kvea1!Vr_ei}jtTFtZA;4d78zu$ zQ`otolv$Iq>c_s`j^2*VNghN%f!p;ckv&@R0}Pi$QhwJ}9oowe^ShL-YhSS+@ZsNM zll+o^ZPWVV1NHhV3QmwiwEQ3TO-MrEYBLF<^dNzW{}Us)wwMPdttMs zs{xylRTjQ-dMQ58iuMOKS&B(Pq31t5GWKxZ#KHzndiPnCnV=OYIZwS88AfpMTz=SNqIltL!U}) z^sqp*t|ZDWtVH1gY{A~Q>jPy5l?Cw;7y%QrQ$IZbm3;jkIY9&EPQ|I>R3OF7R9; zl=uX=+I6hP8~20`TMhw4)R4-1l7+x)vL5(iQEclH%-X=HKHy(3AVcqhB;{L{#fOa- z0i&1Xxt=24EffT>tsU|!l-d{4Zc)H# zCyG%h5)w?Qy^{y^%g1emIat=O|3sac1{N2KsYT#(^FzguNo;8)f;FS!$iVuIujiKY zEY#-AqI1_d|7U*>Sg$a-qorUV)gg0qg|dmu-5RDVE+3OubUwCW+qBZ{^ozjSTv_hps1h~y3P(4=fLuAOR^%V~SgQi{#4ia3M znP9~K&rMz0Fgm^3MV-G(`2Y|)@rQb!EpeJ=KbKG9YD=Gzk~7OHiO-=AF0W8JdtgJv zu2V0L1N|=Ma{B5yzm#b1ACESbmMse7_{%9e*MH{P&nXXk6iP${lV&%nt}yy_bj7Bs z{{l>j+nsM|ZdvJ;J2zL?qdaEYIR!8I|8f=5ALgHX`s(2kN!N@Q6ZiW$er^51c8a02 z>Q>0#iA7tD-xYn$3-RBP-WVoPYgMT*rw|eqClojySA=X|exCVfGhffGkl@R|;(G0L zI;O3@9V(?~7oBeVf&YP{&!#yOEMA_T@5ep|7=?>w`<9w%Ma6Tg@LOHTa$S(Av>#-m#+l-Kpo_R=*FcQwRQz#b6WF^@qivFAh}@Z1P~;C^^zQ)VZAe};WLHEbs&OBS4zdAV$s)ec|N zuyuL;C5m0AuifOaY5k<}K7GoR)$PK-lQ9^8d*ZkQt{z+6(BjB`E5|GTduH(4wAVS= zjQ%m({PaJFY4Lt%6p&Fax({0H`(oO&&A>w+{wSs!hs@3@`R=zqeCq1ha}}qqCMFoK zGWewQK*Yl@C4a}nK0~MDoq2cXZF=$Qn@Q#Y$H3aTle#>-+;+ueU7qtJXYN$sKKA}a zf!;e-Gd`2}bzEX$dq-aC7ojQNf4NN&uTIEl>$q4Kuw`*o?49mcwT8JRK)KFGB zVzw~sWR3KWmWrHJe-HQHGI{=eMV0Gvzv?&yI+Mh`w0f76Y2lpH7s}i& z1pa;S&h=~i>j@60BSP%dKnI&V(AdklPx2{!;erpH{@leJyosNMtd6<4pu zwJfN7|H9<TMCdMeiZeg=mY_34+yo?;=Wc(L2#=ltlC(S_IJ& z1d;zfAKwq}nKN_G%sF@F%)P(4cV=RAwN;6U=!gIS0I|B7l0H@<|EpkpY%6uQ?1>e) zFXXl40f6^OkUMKUY#(l`rmqD61h4}Dp%DPU4R$E>I{@H~004eiVYRXW0BTfzr`~@P z;oE4cDgpleSBiTo(y${0Xmu@Rf?Yx|H6!IXvk5T(Kx(6|ByZ^Wbs^6mZLttMDtFZ* zejBecA8+g|*lIW4$k*+j9ZC#@l4uf@5^pB6PmeGsI62No>@m!XIpxmc25_3?4*kj| z2Sp4;SY=uvtZeC%6R3GlGHagY&N*Hl_pHi&Rm+U0wo6#Myc$*WD($$CJ-NDFzwPR~ z>UkaKc#n|=;36Kp!xh8v2n`F@u}F7@QIk>>GqlrRv* zo6h|p7!fELAKn>e36vvPvG(kdaq5>eB{s!hBd{P?dcOiw9=3YlZv~@G3QH$jB0z$W z#853Nzpr7c{@(bg2Pgvln^|6Py*Pn09`obHloW&~0xvOX10FJ)2AvdDHuPB*FfRE5B>SW zA@P#csvMxY=bY~>>p8YtEkJiNr#Ph+vE^pU)}$I{k^|4I0)C@~p~C35q-yN5#Oi-O zbN4p=G|rsPnOMEmNnPM|Ff`>&9tWd)$l95*;|>nAEBcnB2`&?FS4MZY^!%UV1`)MW z?>vcMiI^lFmW}x2eF? z*w2rBkl)b-H`2mbz(^pHh`}cR&)*c8{O}gwB1jI{i<@ri3)a)eoMypYE}I@CkHc>R zk`)t=b&NS5m$0HN!KXe585?4 zz3yz%2axP9Ge}e2J^t;nxETGnSCrApkKFp(ICu zdqzK?8XONNN-Tb35KAoTCJ$H@>fN7|eC}zuz)s}p|8!Hvt1vNH!;UlhXi`fXGh{9r zN$_QT#6+%#Ea?+wq2z35uScSWu6j>r&|z*?B*PIo+`HXVI&b#rlcb|{Ti%~qr(|s& zngG!Td`FNJ3@!b4`rPH~J*=VcOgq0<5`folY5k?MjWxogeJ#4tv&nCkcb_ERWdypR z3lpM6GiM9er?{_qK`!!MzWe3>9WuPs*;YWiAgfPXKx7I0`-bL(@rTXA-NAK_cI&Y_ zhx6F`H}5#XQRG`bc_+e75R4#%*=?u>C$as`OW_64g<${vh_pNyqF*-^Io|V_QY;U4 zudk%eHSj7C$=HfTx&ng1^gAfN<6f+J{!wwGH=Ji*hXX^=prfVyM>pV-dZBi)1x>rxW5gm7unDjj%}-iOg^B6Qq~Cn)jy~-cIkTEHPT`wZU_;W6a8e zq1VWcmOv;XG=3Np2d+nTk>2Y!NMrs5yqW>M;|7QEvz0ASu7#Y`);wKN3*k&$bbYbf z>$B#=V`LdYj*XrZA7j26Rq&FaU+V9?r>3GI z0sIjkoSGV5ed7P}Ts+B%QW;>^guiip5XW%Hq(u7duAw5_oEJ;E5QWg<@uw$$zQ0Y_ z4lLkz;L9F9-_wMFRss~D81kui=iA=PfblK@X&*dQpOl! zG8LaK)zWPQ2MJ4)ptG5S-dNv-0BNRX-CPg%5C3(<%+#BW89~aiI~@OkPv6G0xhT*) zD@`L~B>NmUFJ1i*{k@>Jz-4_galMLEtJMEG$Mp`qt$p(mHk{6Xv{>_|5?KDiv09z6B_RR&inpry+|nvK^n|mhB3V zjV;02ai(v5f-h@^&T`Ju6>2g=E9jtn*sc+OruTi(G@q*E9C=CA z(4<`O&zG?f20L#YBT_X&xj;7#xmN-7a((|CCgRqR*Vhh-K6oA0W^X%s(o=(c(l~Hy z=u?#w46aAJjL-Ko-%?1pu65h6(?9nwvb;Zd77(tdREInwRJpzN?nqaYSWTtRcT_i`vD4hXe=ND7AY9eO35nFAze@8V4O8;YM>D49$i47?Rj-ov};hk zhq|4R3_2Sb2CV&CVs8yWog1dP=ZkGIP${7P&f{Z2`FkUaR!rJd{SuU&eb~%`TYy8_ zdp)ayr4*Od1GI%3%i?L2HPL;ep?|;|h6++(yNb}9tZ{3=h9S?Qyz%P2GKDV%Y4X3LoCu=&Y`^w~(j9V84O zc>4?gEiNmeehzPL6?RWtd}zI`i_I&kj*~g9?uNf`+4{Wl6|zgllS#`-ju-xC4Y1c= zKXB%mCpHH85DPnNa-o*n&l*)yD|sK>om0L#yX!iVo!5HgW^7Q2&SYf-7A`jyowzP3 zuw?A+Q3`XRr5$Uy-VE$pU#0NRo5{F0B#$1yVP?Y`Z)iG8{46cd9gcOj?)H91ZEbh! zp+u+KjvGn#WF~`|2_>_sU`6Jt$+Yz#PTQ9EvRY}=kwq@kt8}vcYSzB4U4JxPNH&s(WTn4pUDPQNmU}}!a7$`50@iQ zajLdnN#lB{%)m^n8YAcCTvp35^n21lSA2N%O5A0uQL=@%$Y}7eD+zn9&pMBS4nOiN zdAH|nuZKUxOv{uj%U#%2#P7BI{O8W-NBcc}4y>X|?^!Hx74P5@FX2i>()|14RCqPp z+(h2#O&%yKVYkV7sd*bVw1PSrqx}v-#ciLG2@bT4Rw#eT&VVW%0|Rl_y}} z{9}?xgw)EkbEXQ&FD>8Cdr5^3a26)B^u%8ga>{Krh$tsdTD9ZFk9}-fTg*v=vBRd< zi$fm0h~lyBO(kD&(V{vwLzj6|rc-q`I1;H!fp}l$E4*2iPZ|ACFW!PW{uV&ztl_ug zyK0JTiv2+*FwDe3=2*qYmZ@g2+30n;1HgiiwXPvlP}V%AY*b182&zKHa6pvnrZ$uk z+%vWbu$z~PZVS5=j1(YL)Kh~V(L$iG2S;p7OL3nz)*vnuAF|%OsE$!KN+r}4EiHfV z=OFs2f`VKU=Ri4CsqpTbuYxZpAx<*$ z^5tz0mNy_Vxc#KC4V+%QZUQ?35?Mh|U}A?$yi#Sdbxdly*1O!w7+Um`w#hHqs!*6FvBzy8HzMej?*p zrqp$z|3Iv4@0JN=TA;*N7j|NC;0N-KupDh5E)9>pR5j}OZIvJ3rC^zcFROjW>Y)nH zCFvIiTSFw3R@uNlbI!+kaT;XItK_JwhLy zl9eNER~uAkgeO#+^v=uh`lYyb6W|sDTM}gzhSMb+#q%DxRcHyO<=uCy32+_GPn-_u8^?iTd5S;%2MjaG`+eO{R?-pB zNK8hnYxe6;mR`WupCDCp+G#`^z_sx7-;Q)8#k1+6X0_y-Q%;qGishM786X3Zdx~;X zdpT-Ou8&c z&2s-lM+jqd_D0^oIA05=B+h_9PJ0hW?BPx*v@HPOm%n`u1$!8Ca!%+>PO0ze z18`U&{I(EsR&vcW3LJ8{QmDwF9S&=gA$)S_^VrbT5W^6`WT;xP20!2jH7WXBK{Nxq P1VCL`Td7XL>h=Esnt{rm diff --git a/docs/apple-touch-icon-76x76.png b/docs/apple-touch-icon-76x76.png deleted file mode 100644 index f980333590681767037e257dfd81cd073847a8fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6536 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 qPT#n4;>ejJGDp}?H+U@Y(qnifE?Dx($#g2v3I - - - - - - -Piggyback comparison to alternatives • piggyback - - - - - - - - - - - - - - - - - - - -

-
- - - - -
-
- - - - -
-

-piggyback vs the alternatives -

-

There are many alternatives to piggyback, and after considerable experience I haven’t found any that ticked all the boxes for me:

-
    -
  • - -Free storage
  • -
  • - -Can be integrated into private code / private workflows
  • -
  • - -Simple and practical to deploy on continuous integration
  • -
  • - -Works well with private data
  • -
  • - -Minimal configuration
  • -
-
-

Git LFS -

-

Git LFS provides the closest user experience to what I was going for. It stands out above all other alternatives for providing both the best authentication experience (relying directly on any of the standard git authentication mechanisms such as https, ssh keys, app integration), and it provides the most legitimate version control of the data. However, there are many show-stoppers to using Git LFS for me.

-
    -
  • GitHub pricing & resulting problems for GitHub’s fork / PR model. Described eloquently here. Basically, despite generous rates and free data options everywhere else, GitHub’s LFS storage and bandwidth not only cost a lot, but also make it impossible to have public forks and pull request for your repository. Technically this is a problem only for GitHub’s LFS (since it stems from the pricing rules); and can be avoided by using LFS on GitLab or other platform, as Jim Hester has described. Still, this proved unsuccessful for me, and still faces the other big issue with git-lfs:

  • -
  • Overwrites git itself. Git LFS is just too integrated into git – it replaces your authentic git engine with git-lfs, such that the identical git command can have different behaviors on a machine with git-lfs installed vs just plain git. Maybe fine for a professional team that is “all in” on git-lfs, but is a constant source of pitfalls when working with students and moving between machines that all have only authentic git installed. The difficulties with supporting pull requests etc are also related to this – in some sense, once you have a git-lfs repository, you’re really using an entirely new version control system that isn’t going to be 100% compatible with the nearly-ubiquitous authentic git.

  • -
-
-
-

Amazon S3 -

-

Amazon S3 is perhaps the most universal and most obvious go-to place for online-available public and private data storage. The 5 GB/mo free tier is nice and the pricing is very reasonable and only very incremental after that. It is easily the most industry-standard solution, and still probably the best way to go in many cases. It is probably the most scalable solution for very large data, and the only such that has built in support/integration to larger query services like Apache Spark / sparklyr. It falls short of my own use case though in the authentication area. I require students create a GitHub account for my courses and my lab group. I don’t like requiring such third-party accounts, but this one is fundamental to our daily use in classroom and in research, and most of them will continue using the service afterwards. I particularly don’t like having people create complex accounts that they might not even use much in the class or afterwards, just to deal with some pesky minor issue of some data file that is just a little too big for GitHub.

-

Amazon’s authentication is also much more complex than GitHub’s passwords or tokens, as is the process of uploading and downloading data from S3 (though the aws.s3 R package is rather nice remedy here, it doesn’t conform to the same user API as the aws-cli (python) tool, leaving some odd quirks and patterns that don’t match standard Linux commands.) Together, these make it significantly more difficult to deploy as a quick solution for moving private data around with private repositories.

-
-
-

Scientific repositories with private storage -

-

For scientific research purposes, this would be my ideal solution. Encouraging researchers to submit data to a repository at the time of publication is always a challenge, since doing so inevitably involves time & effort and the immediate benefit to the researcher is relatively minimal. If uploading the data to a repository served an immediate practical purpose of facilitating collaboration, backing up and possibly versioning data, etc, during the research process itself rather than after all is said and done, it would be much more compelling. Several repositories permit sharing of private data, at least up to some threshold, including DataONE and figshare. Unfortunately, at this time, I have found the interfaces and R tooling for these too limited or cumbersome for everyday use.

-
-
-

-datastorr -

-

The piggyback approach is partly inspired by the strategy used in the datastorr package, which also uploads data to GitHub releases. datastorr envisions a rather different workflow around this storage strategy, based on the concept of an R “data package” rather than the Git LFS. I am not a fan of the “data package” approach in general – I think data should be stored in a platform agnostic way, not as .Rdata files, and I often want to first download my data to disk and read it with dedicated functions, not load it “auto-magically” as a package. This latter issue is particularly important when the data files are larger than what can conveniently fit into working memory, and is better accessed as a database (e.g. SQLite for tabular data, postgis spatial data, etc).

-

In terms of practical implementation, datastorr also creates a new release every time the data file is updated, rather than letting you overwrite files. In principle piggyback will let you version data this way as well, simply create a new release first using pb_new_release(tag="v2") or whatever tag you like. I have not opted for this workflow since in reality, versioning data with releases this way is technically equivalent to creating a new folder for each new version of the data and storing that – unlike true git commits, release assets such as datastorr creates can be easily deleted or overwritten. I still believe permanent versioned archives like Zenodo should be used for long-term versioned distribution. Meanwhile, for day-to-day use I often want to overwrite data files with their most recent versions. (In my case these ‘data’ files are most often created from upstream data and/or other possibly-long-running code, and are tracked for convenience. As such they often change as a result of continued work on the upstream processing code. Perhaps this is not the case for many users and more attention should be paid to versioning.)

-
-
-

Sharding on GitHub -

-

Another creative solution (hack), at least for some file types, is to break large files into multiple smaller files, and commit those to one or many GitHub repositories. While sharding is sometimes a legitimate strategy, it has many obvious practical disadvantages and limitations.

-
-
-
- - - -
- - - -
- -
-

-

Site built with pkgdown 2.0.1.

-
- -
-
- - - - - - - - diff --git a/docs/articles/alternatives_files/header-attrs-2.10/header-attrs.js b/docs/articles/alternatives_files/header-attrs-2.10/header-attrs.js deleted file mode 100644 index dd57d92..0000000 --- a/docs/articles/alternatives_files/header-attrs-2.10/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/articles/index.html b/docs/articles/index.html deleted file mode 100644 index d547ef7..0000000 --- a/docs/articles/index.html +++ /dev/null @@ -1,91 +0,0 @@ - -Articles • piggyback - - -
-
- - - -
-
- - - -
-
- - -
- -
-

Site built with pkgdown 2.0.1.

-
- -
- - - - - - - - diff --git a/docs/articles/intro.html b/docs/articles/intro.html deleted file mode 100644 index 7202eae..0000000 --- a/docs/articles/intro.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - -Piggyback Data atop your GitHub Repository! • piggyback - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- - - - -
-

Why piggyback? -

-

piggyback grew out of the needs of students both in my classroom and in my research group, who frequently need to work with data files somewhat larger than one can conveniently manage by committing directly to GitHub. As we frequently want to share and run code that depends on >50MB data files on each of our own machines, on continuous integration, and on larger computational servers, data sharing quickly becomes a bottleneck.

-

GitHub allows repositories to attach files of up to 2 GB each to releases as a way to distribute large files associated with the project source code. There is no limit on the number of files or bandwidth to deliver them.

-
-

Installation -

-

Install the latest release from CRAN using:

-
-install.packages("piggyback")
-

You can install the development version from GitHub with:

-
-# install.packages("devtools")
-devtools::install_github("ropensci/piggyback")
-
-
-

Authentication -

-

No authentication is required to download data from public GitHub repositories using piggyback. Nevertheless, piggyback recommends setting a token when possible to avoid rate limits. To upload data to any repository, or to download data from private repositories, you will need to authenticate first.

-

To do so, add your GitHub Token to an environmental variable, e.g. in a .Renviron file in your home directory or project directory (any private place you won’t upload), see usethis::edit_r_environ(). For one-off use you can also set your token from the R console using:

-
-Sys.setenv(GITHUB_PAT="xxxxxx")
-

But try to avoid putting Sys.setenv() in any R scripts – remember, the goal here is to avoid writing your private token in any file that might be shared, even privately.

-

For more information, please see the usethis guide to GitHub credentials

-
-
-

Downloading data -

-

Download the latest version or a specific version of the data:

- -
-pb_download("iris2.tsv.gz",
-            repo = "cboettig/piggyback-tests",
-            tag = "v0.0.1",
-            dest = tempdir())
-

Note: Whenever you are working from a location inside a git repository corresponding to your GitHub repo, you can simply omit the repo argument and it will be detected automatically. Likewise, if you omit the release tag, thepb_downloadwill simply pull data from most recent release (latest). Third, you can omittempdir()if you are using an RStudio Project (.Rprojfile) in your repository, and then the download location will be relative to Project root.tempdir()` is used throughout the examples only to meet CRAN policies and is unlikely to be the choice you actually want here.

-

Lastly, simply omit the file name to download all assets connected with a given release.

-
-pb_download(repo = "cboettig/piggyback-tests",
-            tag = "v0.0.1",
-            dest = tempdir())
-

These defaults mean that in most cases, it is sufficient to simply call pb_download() without additional arguments to pull in any data associated with a project on a GitHub repo that is too large to commit to git directly.

-

pb_download() will skip the download of any file that already exists locally if the timestamp on the local copy is more recent than the timestamp on the GitHub copy. pb_download() also includes arguments to control the timestamp behavior, progress bar, whether existing files should be overwritten, or if any particular files should not be downloaded. See function documentation for details.

-

Sometimes it is preferable to have a URL from which the data can be read in directly, rather than downloading the data to a local file. For example, such a URL can be embedded directly into another R script, avoiding any dependence on piggyback (provided the repository is already public.) To get a list of URLs rather than actually downloading the files, use pb_download_url():

-
-pb_download_url("data/mtcars.tsv.gz",
-                repo = "cboettig/piggyback-tests",
-                tag = "v0.0.1") 
-
-
-

Uploading data -

-

If your GitHub repository doesn’t have any releases yet, piggyback will help you quickly create one. Create new releases to manage multiple versions of a given data file. While you can create releases as often as you like, making a new release is by no means necessary each time you upload a file. If maintaining old versions of the data is not useful, you can stick with a single release and upload all of your data there.

-
-pb_new_release("cboettig/piggyback-tests", "v0.0.2")
-

Once we have at least one release available, we are ready to upload. By default, pb_upload will attach data to the latest release.

-
-## We'll need some example data first.
-## Pro tip: compress your tabular data to save space & speed upload/downloads
-readr::write_tsv(mtcars, "mtcars.tsv.gz")
-
-pb_upload("mtcars.tsv.gz",
-          repo = "cboettig/piggyback-tests",
-          tag = "v0.0.1")
-

Like pb_download(), pb_upload() will overwrite any file of the same name already attached to the release file by default, unless the timestamp the previously uploaded version is more recent. You can toggle these settings with overwrite=FALSE and use_timestamps=FALSE.

-
-
-

Additional convenience functions -

-

List all files currently piggybacking on a given release. Omit the tag to see files on all releases.

-
-pb_list(repo = "cboettig/piggyback-tests",
-        tag = "v0.0.1")
-

Delete a file from a release:

-
-pb_delete(file = "mtcars.tsv.gz",
-          repo = "cboettig/piggyback-tests",
-          tag = "v0.0.1")
-

Note that this is irreversible unless you have a copy of the data elsewhere.

-
-
-

Multiple files -

-

You can pass in a vector of file paths with something like list.files() to the file argument of pb_upload() in order to upload multiple files. Some common patterns:

-
-library(magrittr)
-
-## upload a folder of data
-list.files("data") %>%
-  pb_upload(repo = "cboettig/piggyback-tests", tag = "v0.0.1")
-
-## upload certain file extensions
-list.files(pattern = c("*.tsv.gz", "*.tif", "*.zip")) %>%
-  pb_upload(repo = "cboettig/piggyback-tests", tag = "v0.0.1")
-

Similarly, you can download all current data assets of the latest or specified release by using pb_download() with no arguments.

-
-
-

Caching -

-

To reduce API calls to GitHub, piggyback caches most calls with a timeout of 1 second by default. This avoids repeating identical requests to update it’s internal record of the repository data (releases, assets, timestamps, etc) during programmatic use. You can increase or decrease this delay by setting the environmental variable in seconds, e.g. Sys.setenv("piggyback_cache_duration"=10) for a longer delay or Sys.setenv("piggyback_cache_duration"=0) to disable caching.

-
-
-

Valid file names -

-

GitHub assets attached to a release do not support file paths, and will convert most special characters (#, %, etc) to . or throw an error (e.g. for file names containing $, @, /). piggyback will default to using the base name of the file only (i.e. will only use "mtcars.csv" if provided a file path like "data/mtcars.csv")

-
-
-

A Note on GitHub Releases vs Data Archiving -

-

piggyback is not intended as a data archiving solution. Importantly, bear in mind that there is nothing special about multiple “versions” in releases, as far as data assets uploaded by piggyback are concerned. The data files piggyback attaches to a Release can be deleted or modified at any time – creating a new release to store data assets is the functional equivalent of just creating new directories v0.1, v0.2 to store your data. (GitHub Releases are always pinned to a particular git tag, so the code/git-managed contents associated with repo are more immutable, but remember our data assets just piggyback on top of the repo).

-

Permanent, published data should always be archived in a proper data repository with a DOI, such as zenodo.org. Zenodo can freely archive public research data files up to 50 GB in size, and data is strictly versioned (once released, a DOI always refers to the same version of the data, new releases are given new DOIs). piggyback is meant only to lower the friction of working with data during the research process. (e.g. provide data accessible to collaborators or continuous integration systems during research process, including for private repositories.)

-
-
-

What will GitHub think of this? -

-

GitHub documentation at the time of writing endorses the use of attachments to releases as a solution for distributing large files as part of your project:

-

-

Of course, it will be up to GitHub to decide if this use of release attachments is acceptable in the long term.

-
-
-
- - - -
- - - -
- -
-

-

Site built with pkgdown 2.0.1.

-
- -
-
- - - - - - - - diff --git a/docs/articles/intro_files/header-attrs-2.10/header-attrs.js b/docs/articles/intro_files/header-attrs-2.10/header-attrs.js deleted file mode 100644 index dd57d92..0000000 --- a/docs/articles/intro_files/header-attrs-2.10/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/authors.html b/docs/authors.html deleted file mode 100644 index e6dc9b7..0000000 --- a/docs/authors.html +++ /dev/null @@ -1,123 +0,0 @@ - -Authors and Citation • piggyback - - -
-
- - - -
-
-
- - - -
  • -

    Carl Boettiger. Author, maintainer, copyright holder. -

    -
  • -
  • -

    Mark Padgham. Contributor. -

    -
  • -
  • -

    Jeffrey O Hanson. Contributor. -

    -
  • -
  • -

    Kevin Kuo. Contributor. -

    -
  • -
-
-
-

Citation

- Source: DESCRIPTION -
-
- - -

Boettiger C (2022). -piggyback: Managing Larger Data on a GitHub Repository. -R package version 0.1.1.9001, https://github.com/ropensci/piggyback. -

-
@Manual{,
-  title = {piggyback: Managing Larger Data on a GitHub Repository},
-  author = {Carl Boettiger},
-  year = {2022},
-  note = {R package version 0.1.1.9001},
-  url = {https://github.com/ropensci/piggyback},
-}
- -
- -
- - - -
- -
-

Site built with pkgdown 2.0.1.

-
- -
- - - - - - - - diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css deleted file mode 100644 index 5a85941..0000000 --- a/docs/bootstrap-toc.css +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ - -/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ - -/* All levels of nav */ -nav[data-toggle='toc'] .nav > li > a { - display: block; - padding: 4px 20px; - font-size: 13px; - font-weight: 500; - color: #767676; -} -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 19px; - color: #563d7c; - text-decoration: none; - background-color: transparent; - border-left: 1px solid #563d7c; -} -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 18px; - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-left: 2px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} -nav[data-toggle='toc'] .nav .nav > li > a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; - font-weight: normal; -} -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 29px; -} -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 28px; - font-weight: 500; -} - -/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ -nav[data-toggle='toc'] .nav > .active > ul { - display: block; -} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js deleted file mode 100644 index 1cdd573..0000000 --- a/docs/bootstrap-toc.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ -(function() { - 'use strict'; - - window.Toc = { - helpers: { - // return all matching elements in the set, or their descendants - findOrFilter: function($el, selector) { - // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ - // http://stackoverflow.com/a/12731439/358804 - var $descendants = $el.find(selector); - return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); - }, - - generateUniqueIdBase: function(el) { - var text = $(el).text(); - var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); - return anchor || el.tagName.toLowerCase(); - }, - - generateUniqueId: function(el) { - var anchorBase = this.generateUniqueIdBase(el); - for (var i = 0; ; i++) { - var anchor = anchorBase; - if (i > 0) { - // add suffix - anchor += '-' + i; - } - // check if ID already exists - if (!document.getElementById(anchor)) { - return anchor; - } - } - }, - - generateAnchor: function(el) { - if (el.id) { - return el.id; - } else { - var anchor = this.generateUniqueId(el); - el.id = anchor; - return anchor; - } - }, - - createNavList: function() { - return $(''); - }, - - createChildNavList: function($parent) { - var $childList = this.createNavList(); - $parent.append($childList); - return $childList; - }, - - generateNavEl: function(anchor, text) { - var $a = $(''); - $a.attr('href', '#' + anchor); - $a.text(text); - var $li = $('
  • '); - $li.append($a); - return $li; - }, - - generateNavItem: function(headingEl) { - var anchor = this.generateAnchor(headingEl); - var $heading = $(headingEl); - var text = $heading.data('toc-text') || $heading.text(); - return this.generateNavEl(anchor, text); - }, - - // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). - getTopLevel: function($scope) { - for (var i = 1; i <= 6; i++) { - var $headings = this.findOrFilter($scope, 'h' + i); - if ($headings.length > 1) { - return i; - } - } - - return 1; - }, - - // returns the elements for the top level, and the next below it - getHeadings: function($scope, topLevel) { - var topSelector = 'h' + topLevel; - - var secondaryLevel = topLevel + 1; - var secondarySelector = 'h' + secondaryLevel; - - return this.findOrFilter($scope, topSelector + ',' + secondarySelector); - }, - - getNavLevel: function(el) { - return parseInt(el.tagName.charAt(1), 10); - }, - - populateNav: function($topContext, topLevel, $headings) { - var $context = $topContext; - var $prevNav; - - var helpers = this; - $headings.each(function(i, el) { - var $newNav = helpers.generateNavItem(el); - var navLevel = helpers.getNavLevel(el); - - // determine the proper $context - if (navLevel === topLevel) { - // use top level - $context = $topContext; - } else if ($prevNav && $context === $topContext) { - // create a new level of the tree and switch to it - $context = helpers.createChildNavList($prevNav); - } // else use the current $context - - $context.append($newNav); - - $prevNav = $newNav; - }); - }, - - parseOps: function(arg) { - var opts; - if (arg.jquery) { - opts = { - $nav: arg - }; - } else { - opts = arg; - } - opts.$scope = opts.$scope || $(document.body); - return opts; - } - }, - - // accepts a jQuery object, or an options object - init: function(opts) { - opts = this.helpers.parseOps(opts); - - // ensure that the data attribute is in place for styling - opts.$nav.attr('data-toggle', 'toc'); - - var $topContext = this.helpers.createChildNavList(opts.$nav); - var topLevel = this.helpers.getTopLevel(opts.$scope); - var $headings = this.helpers.getHeadings(opts.$scope, topLevel); - this.helpers.populateNav($topContext, topLevel, $headings); - } - }; - - $(function() { - $('nav[data-toggle="toc"]').each(function(i, el) { - var $nav = $(el); - Toc.init($nav); - }); - }); -})(); diff --git a/docs/docsearch.css b/docs/docsearch.css deleted file mode 100644 index e5f1fe1..0000000 --- a/docs/docsearch.css +++ /dev/null @@ -1,148 +0,0 @@ -/* Docsearch -------------------------------------------------------------- */ -/* - Source: https://github.com/algolia/docsearch/ - License: MIT -*/ - -.algolia-autocomplete { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.algolia-autocomplete .ds-dropdown-menu { - width: 100%; - min-width: none; - max-width: none; - padding: .75rem 0; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); -} - -@media (min-width:768px) { - .algolia-autocomplete .ds-dropdown-menu { - width: 175% - } -} - -.algolia-autocomplete .ds-dropdown-menu::before { - display: none -} - -.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { - padding: 0; - background-color: rgb(255,255,255); - border: 0; - max-height: 80vh; -} - -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { - margin-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion { - padding: 0; - overflow: visible -} - -.algolia-autocomplete .algolia-docsearch-suggestion--category-header { - padding: .125rem 1rem; - margin-top: 0; - font-size: 1.3em; - font-weight: 500; - color: #00008B; - border-bottom: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { - float: none; - padding-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { - float: none; - width: auto; - padding: 0; - text-align: left -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content { - float: none; - width: auto; - padding: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content::before { - display: none -} - -.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { - padding-top: .75rem; - margin-top: .75rem; - border-top: 1px solid rgba(0, 0, 0, .1) -} - -.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { - display: block; - padding: .1rem 1rem; - margin-bottom: 0.1; - font-size: 1.0em; - font-weight: 400 - /* display: none */ -} - -.algolia-autocomplete .algolia-docsearch-suggestion--title { - display: block; - padding: .25rem 1rem; - margin-bottom: 0; - font-size: 0.9em; - font-weight: 400 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--text { - padding: 0 1rem .5rem; - margin-top: -.25rem; - font-size: 0.8em; - font-weight: 400; - line-height: 1.25 -} - -.algolia-autocomplete .algolia-docsearch-footer { - width: 110px; - height: 20px; - z-index: 3; - margin-top: 10.66667px; - float: right; - font-size: 0; - line-height: 0; -} - -.algolia-autocomplete .algolia-docsearch-footer--logo { - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position: 50%; - background-size: 100%; - overflow: hidden; - text-indent: -9000px; - width: 100%; - height: 100%; - display: block; - transform: translate(-8px); -} - -.algolia-autocomplete .algolia-docsearch-suggestion--highlight { - color: #FF8C00; - background: rgba(232, 189, 54, 0.1) -} - - -.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { - box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) -} - -.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { - background-color: rgba(192, 192, 192, .15) -} diff --git a/docs/docsearch.js b/docs/docsearch.js deleted file mode 100644 index b35504c..0000000 --- a/docs/docsearch.js +++ /dev/null @@ -1,85 +0,0 @@ -$(function() { - - // register a handler to move the focus to the search bar - // upon pressing shift + "/" (i.e. "?") - $(document).on('keydown', function(e) { - if (e.shiftKey && e.keyCode == 191) { - e.preventDefault(); - $("#search-input").focus(); - } - }); - - $(document).ready(function() { - // do keyword highlighting - /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ - var mark = function() { - - var referrer = document.URL ; - var paramKey = "q" ; - - if (referrer.indexOf("?") !== -1) { - var qs = referrer.substr(referrer.indexOf('?') + 1); - var qs_noanchor = qs.split('#')[0]; - var qsa = qs_noanchor.split('&'); - var keyword = ""; - - for (var i = 0; i < qsa.length; i++) { - var currentParam = qsa[i].split('='); - - if (currentParam.length !== 2) { - continue; - } - - if (currentParam[0] == paramKey) { - keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); - } - } - - if (keyword !== "") { - $(".contents").unmark({ - done: function() { - $(".contents").mark(keyword); - } - }); - } - } - }; - - mark(); - }); -}); - -/* Search term highlighting ------------------------------*/ - -function matchedWords(hit) { - var words = []; - - var hierarchy = hit._highlightResult.hierarchy; - // loop to fetch from lvl0, lvl1, etc. - for (var idx in hierarchy) { - words = words.concat(hierarchy[idx].matchedWords); - } - - var content = hit._highlightResult.content; - if (content) { - words = words.concat(content.matchedWords); - } - - // return unique words - var words_uniq = [...new Set(words)]; - return words_uniq; -} - -function updateHitURL(hit) { - - var words = matchedWords(hit); - var url = ""; - - if (hit.anchor) { - url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; - } else { - url = hit.url + '?q=' + escape(words.join(" ")); - } - - return url; -} diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png deleted file mode 100644 index 0c2108965af482c4e3955c98455c071413152731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>baTQNuK#8lag#aZ%%RQPV7-QNq%GAfv1cMdSiStqX)@ z{DEAc)gZmv@j|BArm;N^X_JM`b47F#L=-{<{aU4iJDm&X&fIh=qH%?L$pR7IR)@Sfsom>ci|0o+t&D0~nbNhcY{m}V z#7W`-ZNk2-g5J#{ey!mREBq=K7f#tKAJ#4A*XB{WKrXaPF}z11yxTf^X8z z666O;Wtc!^#v&a?fwas2ZWW5KdG7x8=V&me?!1p*SDG^N?m8+gaN?raMgH@mOo1o= z{<{>zB3^#~X_G9Y*0i@D7aB3K`JBBL&M~p*<0PQLj7i?^E*njf=Yi5Udx@v7EBjMU z4sltf!a1LqfI?qAT^vIsE+;22FuAD(8WwVTrm=A(Bu9mf>>n*frcMb} zTD&MZLm2L)fgWNfr~Q*lsnZ;zyp&*z}v z&)h~_-Ce=K!Dr7LWKvz4`c!o4&Cr!A#S$7Py_$7v*RQr?%hFajc*o{uhelVsr-z$| zEKuLQeSQ6*BlA21L~|!E_nB)}d+f}%NCigk#W#zeotwQs;o+jp?&&U3k;XS}+`6eB zyRGKvsZecc8JW3rBr7UnWA28nkBr`xw|95Dy1e}bW2U%!cKZsY|NLQQVqN%8l#7dx zlb2gujByjAUT46)@6&g10s}y`#5JNMC9x#cD!C{XNHG{07#ZpsSn3*BgcuoH8ChBx zn`j#tSQ!|Y{FJmn(U6;;l9^VCTZ8M8g}_3BA-pOC7}JU63I#>^X_+~x3MG{VsS23| zCCLm76>}bc;^8O^)6h8OfBKB)(;xZee9%@5v&}!U`@8CWlj)l{bedoW618 m#E~;cWR9?(Ztz&(rN{6}T(IPmlj&5T6%3xPelF{r5}E*@Po!1= diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png deleted file mode 100644 index 3b61c0283826d70799982a00dca28b15d16c7ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2217 zcmZ`)c{J4f8~&Qn%v{Ejy%N({F1l$#nIkUMCh;(001IZI4quz zh+hu|;rH;^*zbH03^1`X0RR?5c*py|uOShKw*!D!RREwR0l-f_Mf(B(5hwsy^a23P zZ2*uByZhA1fIoov*jQqL{a;nWevr*)pj0b6bLi}EFxjI@kUMQTe8$=eYeH~+Rhu7| z=5kiL^J;K$_}7B%!j?L3IS6D%Cl|CraH?=GQNJH#lMoo}s{+ zdyi0@Uo!%h-cd}#nx-%&Y}>S3-zMvy*|}LAJ^iAGntMQlVdsV zxMLf8KLCsE5MpoN%adVCy0~hVi;ixJpxG0%POt0rKMW0fNq73E8BD*Gqc_9Ax^eau z>K`I*EUB)srK89DULug6N(W6>@rYsbCh|pS?L3I#ecCuLy3EtAFvLb#$a)AfxBX>Y z!Ipg6k4v5!F?P3%k538*D~;8MK{_b8hMtDEX*aQDLR@mCJ6m{STRBXqGS;;FfImE` zVlH0fvf?c%i-}~sn2j>VL&8e#*_vxk>W_sh=cXITeWV&Uwv@i>Kt7I=*u5}$kb zpy^xFKGmnnDK(dSI|Pz_r6xY6jFrcJ|&zDwvfuKI6Em()xgK*$^%#;`WIbT?puq0r zs_(|}XKFc*)LIB$30R~YJSR2#n}M*(!%K9`=F>CXLXXQI<&R%GDAOA<6&7V&ib`2SHod92HL?@eNn%@5_|xd+%BBo<1iewU%Ra>jN0BCeAy})Z?KzxZzpcw3M=@k zy>lrExN)ZH+-$(f=iNC3Lx5qpA!ffRT9)JG(Z>H5de>t$>SJ zO1}>PW2|UR9-i(TZ`Mn;s{ff6b2)TCMl@=xeDKE;Ia%7$2kj(J(+JT=9F&-ix@g3f zliJw=eHD9WWZT#N25L=nCNTgFpGj@bpx5ajWsr&jG_C6;!5b?lPx!k#gWr%oagS`< zJ61<)>n2?aq2p6aFQ>fV#3y|=Er@7pYM^vS1QPW|Ph**md;0=6V2Mg9muq84ubmo~ z7u#4;jg@j;(*4B)kbma22Ut^(^FK!f_#VQy-t*FOGe<@NBh1Xk?O`v&8eLW%+!`0({#zQ=#9VqFiP& zJl1$iWu$5S^@x}ks>>xwpL~GtVTn!7>kUpVVq-k@MKjH-u^R}_05mp1;4(=qN5i0* za*%PE7cMA&XF8zagZ0}^+sB}M{gAX$qnY(ij%3KEA^LpqPsqj(PN!TVKDA{a%V2FP zvaA*0;d8$`DtxTJ&9{*9iyf3%U*)W%oM=Wo*IUV$>}hR4uh<(4iJetBR|BOHAfr81Z6Uxt9NOy$;|q z@f!c8FeDO^YkfMU;ywA+9Ko=`Bg-~4^)v5q92G(^Os~_)_VI3O1?c$PmU5-1DlWg0 zAU$KelVUg)&221Z*xObKj>7$wqu|6M^NMH=;>pSg)T!^~?uSh?j67*~=fuh%IPk?RV~Rvb+qb^uO-W3Wau2bm8uHx$GV)9Sq37&txj1qmzO+j@-5EL!z6ty?5w zI_A!`37=m5!Cb@XX5(do2b7>OsW(7_Ub+jd;CQFDOXwsbLFc7U>D@TgE9#`aFAyzJ zDe9GW=uMI5#-?_U7=8Fp&_rvkhss*C6t~T{!7r75HDi+(QSy^jIKaa7vt>;ZaYs9A zOb4f7T7U1Ue~Y^)8fYrB`$AD%@hKI3_1B?Qp_;o=eZ8rE7$U`w4*(j4);fXGKY`LC zpig1Y`j}HX$5AK@3YC>1k@i0eq)^`=|Cs;3Fg;MsKlZ@cSb{4R?;V8*qlEegh4>+; zF=2j)pfD;C0HW_suft)N{!&xxap3k^&Ef&DlCUOGSW-#SCR++DiNMmdU-^QS8VCsP mhrzD)-gfzRD3^vSvDO3@We-xS3Gh__ diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 1d84ff7309b00fc576e08799197ac20441250d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index d579e91..0000000 --- a/docs/index.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -Managing Larger Data on a GitHub Repository • piggyback - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    -
    - - - -

    Because larger (> 50 MB) data files cannot easily be committed to git, a different approach is required to manage data associated with an analysis in a GitHub repository. This package provides a simple work-around by allowing larger (up to 2 GB per file) data files to piggyback on a repository as assets attached to individual GitHub releases. These files are not handled by git in any way, but instead are uploaded, downloaded, or edited directly by calls through the GitHub API. These data files can be versioned manually by creating different releases. This approach works equally well with public or private repositories. Data can be uploaded and downloaded programmatically from scripts. No authentication is required to download data from public repositories.

    -
    -

    Installation -

    -

    Install from CRAN via

    -
    -install.packages("piggyback")
    -

    You can install the development version from GitHub with:

    -
    -# install.packages("devtools")
    -devtools::install_github("ropensci/piggyback")
    -
    -
    -

    Quickstart -

    -

    See the piggyback vignette for details on authentication and additional package functionality.

    -

    Piggyback can download data attached to a release on any repository:

    -
    -library(piggyback)
    -pb_download("iris.tsv.gz", repo = "cboettig/piggyback-tests", dest = tempdir())
    -#> Warning in pb_download("iris.tsv.gz", repo = "cboettig/piggyback-tests", :
    -#> file(s) iris.tsv.gz not found in repo cboettig/piggyback-tests
    -

    Downloading from private repos or uploading to any repo requires authentication, so be sure to set a GITHUB_TOKEN (or GITHUB_PAT) environmental variable, or include the .token argument. Omit the file name to download all attached objects. Omit the repository name to default to the current repository. See introductory vignette or function documentation for details.

    -

    We can also upload data to any existing release (defaults to latest):

    -
    -## We'll need some example data first.
    -## Pro tip: compress your tabular data to save space & speed upload/downloads
    -readr::write_tsv(mtcars, "mtcars.tsv.gz")
    -
    -pb_upload("mtcars.tsv.gz", repo = "cboettig/piggyback-tests")
    -
    -
    -

    Git LFS and other alternatives -

    -

    piggyback acts like a poor soul’s Git LFS. Git LFS is not only expensive, it also breaks GitHub’s collaborative model – basically if someone wants to submit a PR with a simple edit to your docs, they cannot fork your repository since that would otherwise count against your Git LFS storage. Unlike Git LFS, piggyback doesn’t take over your standard git client, it just perches comfortably on the shoulders of your existing GitHub API. Data can be versioned by piggyback, but relative to git LFS versioning is less strict: uploads can be set as a new version or allowed to overwrite previously uploaded data.

    -
    -
    -

    But what will GitHub think of this? -

    -

    GitHub documentation at the time of writing endorses the use of attachments to releases as a solution for distributing large files as part of your project:

    -

    -

    Of course, it will be up to GitHub to decide if this use of release attachments is acceptable in the long term.

    - -

    Also see our vignette comparing alternatives.

    -
    -

    Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

    -

    ropensci_footer

    -
    -
    -
    - - -
    - - -
    - -
    -

    -

    Site built with pkgdown 2.0.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/jquery.sticky-kit.min.js b/docs/jquery.sticky-kit.min.js deleted file mode 100644 index 1c16271..0000000 --- a/docs/jquery.sticky-kit.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | */ -/* - Source: https://github.com/leafo/sticky-kit - License: MIT -*/ -(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k)); -if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("
    "))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q, -u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),eb&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}), -a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize", -y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n - - - - - diff --git a/docs/logo.png b/docs/logo.png deleted file mode 100644 index 02621389fd2d26247f363b137b41c51eaf6b54a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69043 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 diff --git a/docs/logo.svg b/docs/logo.svg deleted file mode 100644 index 462fc18..0000000 --- a/docs/logo.svg +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - image/svg+xml - - RStudio_Hex 2016 v7 outlines - - - - - - - - - - - RStudio_Hex 2016 v7 outlines - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/news/index.html b/docs/news/index.html deleted file mode 100644 index db68813..0000000 --- a/docs/news/index.html +++ /dev/null @@ -1,159 +0,0 @@ - -Changelog • piggyback - - -

    -
    - - - -
    -
    - - -
    - -
    • update intro vignette to remove all mentions of pb_track(), pb_push(), and pb_pull() which were removed as of version 0.0.0.9900
    • -
    • -pb_upload() now handles the dir argument to control relative path directories.
    • -
    • update intro vignette to remove mention of path name handling and instead provide examples of how path names are handled.
    • -
    • update intro vignette instructions for git authentication
    • -
    -
    - -
    • switch to gh::gh_token() for token management. Still supports the same env var approach, but also compatible with gitcreds and other use.
    • -
    • resolve issue in pb_upload() when creating a new tag in the process, previously data would be attached to the previously latest tag instead of the newly created one.
    • -
    • resolve issue in pb_download() where httr would report a 401 status even after data successfully downloads.
    • -
    -
    - -
    • address remaining authentication issue in changes to GitHub API (on pb_upload()) [#47]
    • -
    • Use flat file structure on upload/download instead of encoding path [#48]
    • -
    • improve performance via more aggressive memoising of pb_info() calls, inceasing default piggyback_cache_duration to 10 minutes [#46]
    • -
    • Resolve bug introduced by API changes that would stop creation of tags on repos with default branch called main or without previous releases [#48]
    • -
    -
    - -
    • address issues in authentication due to changes in GitHub API (#37)
    • -
    -
    - -
    • -guess_repo() now infers a remote when there are multiple associated with the repo. The “upstream” (preferred) or “origin” repo is selected if either exists, otherwise the function errors and asks the user to explicitly specify a repo (#31).
    • -
    • -release_info() now works properly when there are no existing releases, which enables the usage of pb_new_release() on repos without a release (#29).
    • -
    • Fix error on pb_info() under certain cases which resulted in Error in a[[1]] : subscript out of bounds, (#36)
    • -
    • Fix CRAN unit-test on deleting file
    • -
    -
    - -
    • Improve interface regarding overwrite behavior in pb_upload() (#25)
    • -
    • Bugfixes for errors introduced in 0.0.9: -
      • Access all assets on a release instead of first 30. This could break upload and download. (#23, #24)
      • -
      • Uploading of directory paths could cause download errors in pb_download(). (#24, #26)
      • -
    • -
    -
    - -
    • Enable re-upload and deletion of partially uploaded files (#19)
    • -
    -
    - -
    • Updates to documentation, streamlining tests
    • -
    • remove dependency on utils::askYesNo which is only available in R >= 3.5.0
    • -
    -
    - -
    • Initial release to CRAN
    • -

    -
    - -
    • bugfix for migrating unit test
    • -
    -
    - -
    • bugfix for migrating unit test, JOSS submission
    • -
    -
    - -
    • initial Onboarding to rOpenSci
    • -
    -
    - -
    • Added a NEWS.md file to track changes to the package.
    • -
    -
    - - - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/onboarding-submission.html b/docs/onboarding-submission.html deleted file mode 100644 index e0698a1..0000000 --- a/docs/onboarding-submission.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - -NA • piggyback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - - -
    -

    -Summary

    -
      -
    • Allow large and binary data files to “piggyback” on top of your existing repositories. push and pull large-ish (< 2GB) data files to & from GitHub repositories as attachments to a GitHub release;

    • -
    • Paste the full DESCRIPTION file inside a code block below:

    • -
    -
    Package: piggyback
    -Version: 0.0.0.9000
    -Title: Managing Larger Data on a GitHub Repository
    -Description: Because larger (> 50 MB) data files cannot easily be committed to git,
    -  a different approach is required to manage data associated with an analysis in a
    -  GitHub repository.  This package provides a simple work-around by allowing larger
    -  (up to 2 GB) data files to piggyback on a repository as assets attached to individual
    -  GitHub releases.  These files are not handled by git in any way, but instead are
    -  uploaded, downloaded, or edited directly by calls through the GitHub API. These
    -  data files can be versioned manually by creating different releases.  This approach
    -  works equally well with public or private repositories.  Data can be uploaded
    -  and downloaded programmatically from scripts. No authentication is required to
    -  download data from public repositories.
    -Authors@R: person("Carl", "Boettiger",
    -                  email = "cboettig@gmail.com",
    -                  role = c("aut", "cre", "cph"),
    -                  comment=c(ORCID = "0000-0002-1642-628X"))
    -URL: https://github.com/cboettig/piggyback
    -BugReports: https://github.com/cboettig/piggyback/issues
    -License: GPL-3
    -Encoding: UTF-8
    -LazyData: true
    -ByteCompile: true
    -Imports:
    -    gh,
    -    httr,
    -    jsonlite,
    -    git2r,
    -    fs,
    -    usethis,
    -    crayon,
    -    clisymbols
    -Suggests:
    -    readr,
    -    covr,
    -    testthat,
    -    datasets,
    -    knitr,
    -    rmarkdown
    -VignetteBuilder: knitr
    -RoxygenNote: 6.0.1.9000
    -Roxygen: list(markdown = TRUE)
    -
    -
      -
    • URL for the package (the development repository, not a stylized html page):
    • -
    -

    https://github.com/cboettig/piggyback

    -
      -
    • Please indicate which category or categories from our package fit policies this package falls under *and why(? (e.g., data retrieval, reproducibility. If you are unsure, we suggest you make a pre-submission inquiry.):
    • -
    -

    reproducibility, because accessing data being analyzed is essential for reproducible workflows, and yet we have no good solution for workflows with unpublished data or private workflows to do this once the data is too large for version control (e.g. files > 50 mb).

    -
      -
    • Who is the target audience and what are scientific applications of this package?
    • -
    -

    The target audience is anyone working with data files on GitHub.

    - -

    datastorr on ropenscilabs is the closest match, which takes a very different approach (from the user perspective – on the back end both store data on GitHub assets) to the essentially the same problem. The Intro vignette discusses at greater length many of the alternative possible strategies and why I feel they have all fallen short of my needs and led to me creating this package.

    -
      -
    • If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.
    • -
    -
    -
    -

    -Requirements

    -

    Confirm each of the following by checking the box. This package:

    -
      -
    • [x] does not violate the Terms of Service of any service it interacts with.
    • -
    • [x] has a CRAN and OSI accepted license.
    • -
    • [x] contains a README with instructions for installing the development version.
    • -
    • [x] includes documentation with examples for all functions.
    • -
    • [x] contains a vignette with examples of its essential functions and uses.
    • -
    • [x] has a test suite.
    • -
    • [x] has continuous integration, including reporting of test coverage, using services such as Travis CI, Coveralls and/or CodeCov.
    • -
    • [x] I agree to abide by ROpenSci’s Code of Conduct during the review process and in maintaining my package should it be accepted.
    • -
    -
    -

    -Publication options

    -
      -
    • [x] Do you intend for this package to go on CRAN?
    • -
    • [x] Do you wish to automatically submit to the Journal of Open Source Software? If so: -
        -
      • [x] The package has an obvious research application according to JOSS’s definition.
      • -
      • [x] The package contains a paper.md matching JOSS’s requirements with a high-level description in the package root or in inst/.
      • -
      • [ ] The package is deposited in a long-term repository with the DOI:
      • -
      • (Do not submit your package separately to JOSS)
      • -
      -
    • -
    • [ ] Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so: -
        -
      • [ ] The package is novel and will be of interest to the broad readership of the journal.
      • -
      • [ ] The manuscript describing the package is no longer than 3000 words.
      • -
      • [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see MEE’s Policy on Publishing Code)
      • -
      • (Scope: Do consider MEE’s Aims and Scope for your manuscript. We make no gaurantee that your manuscript willl be within MEE scope.)
      • -
      • (Although not required, we strongly recommend having a full manuscript prepared when you submit here.)
      • -
      • (Please do not submit your package separately to Methods in Ecology and Evolution)
      • -
      -
    • -
    -
    -
    -
    -

    -Detail

    -
      -
    • x ] Does R CMD check (or devtools::check()) succeed? Paste and describe any errors or warnings:
    • -
    -

    No errors, notes, or warnings.

    -
      -
    • [x] Does the package conform to rOpenSci packaging guidelines? Please describe any exceptions:

    • -
    • If this is a resubmission following rejection, please explain the change in circumstances:

    • -
    • If possible, please provide recommendations of reviewers - those with experience with similar packages and/or likely users of your package - and their GitHub user names:

    • -
    -

    Rich FitzJohn, @richfitz, would be great based on his experience in this area and with datastorr. Jenny Bryan, @Jennybc, since this package makes heavy use of usethis and GitHub interactions.

    -
    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown.

    -
    - -
    -
    - - - - - - diff --git a/docs/paper.html b/docs/paper.html deleted file mode 100644 index c42a881..0000000 --- a/docs/paper.html +++ /dev/null @@ -1,103 +0,0 @@ - -Piggyback: Working with larger data in GitHub • piggyback - - -
    -
    - - - -
    -
    - - - -
    - -

    GitHub has become a central component for preserving and sharing software-driven analysis in academic research [@Ram2013]. As scientists adopt this workflow, a desire to manage data associated with the analysis in the same manner soon emerges. While small data can easily be committed to GitHub repositories along-side source code and analysis scripts, files larger than 50 MB cannot. Existing work-arounds introduce significant complexity and break the ease of sharing [@Boettiger2018].

    -

    This package provides a simple work-around by allowing larger (up to 2 GB) data files to piggyback on a repository as assets attached to individual GitHub releases. piggyback provides a workflow similar to Git LFS [@GitLFS], in which data files can be tracked by type and pushed and pulled to GitHub with dedicated commands. These files are not handled by git in any way, but instead are uploaded, downloaded, or edited directly by calls through the GitHub API [@API3]. These data files can be versioned manually by creating different releases. This approach works equally well with public or private repositories. Data can be uploaded and downloaded programmatically from scripts. No authentication is required to download data from public repositories.

    -
    -

    Examples

    -

    As long as a repository has at least one release, users can upload a set of specified files from the current repository to that release by simply passing the file names to pb_upload(). Specify individual files to download using pb_download(), or use no arguments to download all data files attached to the latest release. Alternatively, users can track files by a given pattern: for instance, pb_track("*.csv") will track all *.csv files in the repository. Then use pb_upload(pb_track()) to upload all currently tracked files. piggyback compares timestamps to avoid unnecessary transfer. The piggyback package looks for the same GITHUB_TOKEN environmental variable for authentication that is used across GitHub APIs. Details are provided in an introductory vignette [@Boettiger2018b].

    -
    -
    -
    -

    References

    -
    - - -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/pkgdown.css b/docs/pkgdown.css deleted file mode 100644 index 80ea5b8..0000000 --- a/docs/pkgdown.css +++ /dev/null @@ -1,384 +0,0 @@ -/* Sticky footer */ - -/** - * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ - * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css - * - * .Site -> body > .container - * .Site-content -> body > .container .row - * .footer -> footer - * - * Key idea seems to be to ensure that .container and __all its parents__ - * have height set to 100% - * - */ - -html, body { - height: 100%; -} - -body { - position: relative; -} - -body > .container { - display: flex; - height: 100%; - flex-direction: column; -} - -body > .container .row { - flex: 1 0 auto; -} - -footer { - margin-top: 45px; - padding: 35px 0 36px; - border-top: 1px solid #e5e5e5; - color: #666; - display: flex; - flex-shrink: 0; -} -footer p { - margin-bottom: 0; -} -footer div { - flex: 1; -} -footer .pkgdown { - text-align: right; -} -footer p { - margin-bottom: 0; -} - -img.icon { - float: right; -} - -/* Ensure in-page images don't run outside their container */ -.contents img { - max-width: 100%; - height: auto; -} - -/* Fix bug in bootstrap (only seen in firefox) */ -summary { - display: list-item; -} - -/* Typographic tweaking ---------------------------------*/ - -.contents .page-header { - margin-top: calc(-60px + 1em); -} - -dd { - margin-left: 3em; -} - -/* Section anchors ---------------------------------*/ - -a.anchor { - display: none; - margin-left: 5px; - width: 20px; - height: 20px; - - background-image: url(./link.svg); - background-repeat: no-repeat; - background-size: 20px 20px; - background-position: center center; -} - -h1:hover .anchor, -h2:hover .anchor, -h3:hover .anchor, -h4:hover .anchor, -h5:hover .anchor, -h6:hover .anchor { - display: inline-block; -} - -/* Fixes for fixed navbar --------------------------*/ - -.contents h1, .contents h2, .contents h3, .contents h4 { - padding-top: 60px; - margin-top: -40px; -} - -/* Navbar submenu --------------------------*/ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover>.dropdown-menu { - display: block; -} - -.dropdown-submenu>a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover>a:after { - border-left-color: #ffffff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left>.dropdown-menu { - left: -100%; - margin-left: 10px; - border-radius: 6px 0 6px 6px; -} - -/* Sidebar --------------------------*/ - -#pkgdown-sidebar { - margin-top: 30px; - position: -webkit-sticky; - position: sticky; - top: 70px; -} - -#pkgdown-sidebar h2 { - font-size: 1.5em; - margin-top: 1em; -} - -#pkgdown-sidebar h2:first-child { - margin-top: 0; -} - -#pkgdown-sidebar .list-unstyled li { - margin-bottom: 0.5em; -} - -/* bootstrap-toc tweaks ------------------------------------------------------*/ - -/* All levels of nav */ - -nav[data-toggle='toc'] .nav > li > a { - padding: 4px 20px 4px 6px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; -} - -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 5px; - color: inherit; - border-left: 1px solid #878787; -} - -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 5px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; - border-left: 2px solid #878787; -} - -/* Nav: second level (shown on .active) */ - -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} - -nav[data-toggle='toc'] .nav .nav > li > a { - padding-left: 16px; - font-size: 1.35rem; -} - -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 15px; -} - -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 15px; - font-weight: 500; - font-size: 1.35rem; -} - -/* orcid ------------------------------------------------------------------- */ - -.orcid { - font-size: 16px; - color: #A6CE39; - /* margins are required by official ORCID trademark and display guidelines */ - margin-left:4px; - margin-right:4px; - vertical-align: middle; -} - -/* Reference index & topics ----------------------------------------------- */ - -.ref-index th {font-weight: normal;} - -.ref-index td {vertical-align: top; min-width: 100px} -.ref-index .icon {width: 40px;} -.ref-index .alias {width: 40%;} -.ref-index-icons .alias {width: calc(40% - 40px);} -.ref-index .title {width: 60%;} - -.ref-arguments th {text-align: right; padding-right: 10px;} -.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} -.ref-arguments .name {width: 20%;} -.ref-arguments .desc {width: 80%;} - -/* Nice scrolling for wide elements --------------------------------------- */ - -table { - display: block; - overflow: auto; -} - -/* Syntax highlighting ---------------------------------------------------- */ - -pre, code, pre code { - background-color: #f8f8f8; - color: #333; -} -pre, pre code { - white-space: pre-wrap; - word-break: break-all; - overflow-wrap: break-word; -} - -pre { - border: 1px solid #eee; -} - -pre .img, pre .r-plt { - margin: 5px 0; -} - -pre .img img, pre .r-plt img { - background-color: #fff; -} - -code a, pre a { - color: #375f84; -} - -a.sourceLine:hover { - text-decoration: none; -} - -.fl {color: #1514b5;} -.fu {color: #000000;} /* function */ -.ch,.st {color: #036a07;} /* string */ -.kw {color: #264D66;} /* keyword */ -.co {color: #888888;} /* comment */ - -.error {font-weight: bolder;} -.warning {font-weight: bolder;} - -/* Clipboard --------------------------*/ - -.hasCopyButton { - position: relative; -} - -.btn-copy-ex { - position: absolute; - right: 0; - top: 0; - visibility: hidden; -} - -.hasCopyButton:hover button.btn-copy-ex { - visibility: visible; -} - -/* headroom.js ------------------------ */ - -.headroom { - will-change: transform; - transition: transform 200ms linear; -} -.headroom--pinned { - transform: translateY(0%); -} -.headroom--unpinned { - transform: translateY(-100%); -} - -/* mark.js ----------------------------*/ - -mark { - background-color: rgba(255, 255, 51, 0.5); - border-bottom: 2px solid rgba(255, 153, 51, 0.3); - padding: 1px; -} - -/* vertical spacing after htmlwidgets */ -.html-widget { - margin-bottom: 10px; -} - -/* fontawesome ------------------------ */ - -.fab { - font-family: "Font Awesome 5 Brands" !important; -} - -/* don't display links in code chunks when printing */ -/* source: https://stackoverflow.com/a/10781533 */ -@media print { - code a:link:after, code a:visited:after { - content: ""; - } -} - -/* Section anchors --------------------------------- - Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 -*/ - -div.csl-bib-body { } -div.csl-entry { - clear: both; -} -.hanging-indent 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; -} diff --git a/docs/pkgdown.js b/docs/pkgdown.js deleted file mode 100644 index 6f0eee4..0000000 --- a/docs/pkgdown.js +++ /dev/null @@ -1,108 +0,0 @@ -/* http://gregfranko.com/blog/jquery-best-practices/ */ -(function($) { - $(function() { - - $('.navbar-fixed-top').headroom(); - - $('body').css('padding-top', $('.navbar').height() + 10); - $(window).resize(function(){ - $('body').css('padding-top', $('.navbar').height() + 10); - }); - - $('[data-toggle="tooltip"]').tooltip(); - - var cur_path = paths(location.pathname); - var links = $("#navbar ul li a"); - var max_length = -1; - var pos = -1; - for (var i = 0; i < links.length; i++) { - if (links[i].getAttribute("href") === "#") - continue; - // Ignore external links - if (links[i].host !== location.host) - continue; - - var nav_path = paths(links[i].pathname); - - var length = prefix_length(nav_path, cur_path); - if (length > max_length) { - max_length = length; - pos = i; - } - } - - // Add class to parent
  • , and enclosing
  • if in dropdown - if (pos >= 0) { - var menu_anchor = $(links[pos]); - menu_anchor.parent().addClass("active"); - menu_anchor.closest("li.dropdown").addClass("active"); - } - }); - - function paths(pathname) { - var pieces = pathname.split("/"); - pieces.shift(); // always starts with / - - var end = pieces[pieces.length - 1]; - if (end === "index.html" || end === "") - pieces.pop(); - return(pieces); - } - - // Returns -1 if not found - function prefix_length(needle, haystack) { - if (needle.length > haystack.length) - return(-1); - - // Special case for length-0 haystack, since for loop won't run - if (haystack.length === 0) { - return(needle.length === 0 ? 0 : -1); - } - - for (var i = 0; i < haystack.length; i++) { - if (needle[i] != haystack[i]) - return(i); - } - - return(haystack.length); - } - - /* Clipboard --------------------------*/ - - function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-original-title'); - element.setAttribute('data-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-original-title', tooltipOriginalTitle); - } - - if(ClipboardJS.isSupported()) { - $(document).ready(function() { - var copyButton = ""; - - $("div.sourceCode").addClass("hasCopyButton"); - - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); - - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); - - // Initialize clipboard: - var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); - } - }); - - clipboardBtnCopies.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); - - clipboardBtnCopies.on('error', function() { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); - }); - }); - } -})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml deleted file mode 100644 index a527a05..0000000 --- a/docs/pkgdown.yml +++ /dev/null @@ -1,8 +0,0 @@ -pandoc: 2.11.4 -pkgdown: 2.0.1 -pkgdown_sha: ~ -articles: - alternatives: alternatives.html - intro: intro.html -last_built: 2022-02-09T19:01Z - diff --git a/docs/reference/Rplot001.png b/docs/reference/Rplot001.png deleted file mode 100644 index 17a358060aed2a86950757bbd25c6f92c08c458f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=9Be?5+AI5}0x7m6Z+90U4Fo@(ch>_c&H|6f zVg?3oArNM~bhqvg0|WD9PZ!6KiaBo&GBN^{G%5UFpXcEKVvd5*5Eu=C0SJK)8A6*F U7`aXvEC5;V>FVdQ&MBb@00SN#Z2$lO diff --git a/docs/reference/figures/github-policy.png b/docs/reference/figures/github-policy.png deleted file mode 100644 index b08345b453eed5e8851790d61be5218cc276ee91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254810 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

    YHjGMuH?qc9SAz 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ζ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 diff --git a/docs/reference/figures/logo.png b/docs/reference/figures/logo.png deleted file mode 100644 index 02621389fd2d26247f363b137b41c51eaf6b54a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69043 zcmZsDWmJ{R8!sx7(kW6Kkdl;cX^?ItC8WENF6k1bySqagX{ABByGy$7Y(4+F_pb8+ z)>-cTzBBXGFNR=wS#cC30wfq17!*kf5k(l7$BQs9Pm~cJga5N;GQkUe!0Ahgi@-cU z|4VPqi-Cb5g^?5yRCY<;n|FS%v_1)cv|0aLX13bYsR5qUx7Q{k)3?mKid5-24mJlh zweU

    9DVNkoUdv7d?zGud|olL_vfFMMXX#U^m3DN~(=!KfiE&$QKeHWw-q7X6?rB zH6lOi7kj$4aA=Q8=}!vY00w3vJ)YsuFX_Zvvd~}J7=}}zKfSfnc^*N3X?)`heP^lWSj2FB9)GR}TG z;oar~P5xcEz5bf-^eWu>;edq-3`~SC__kq6wcn1&an?Vs?p;YfOrer){bGB3Bsf!Rl+3C33Kqs6#yImUTmr(b42I-W1a!NAy{I#9vDa7eFj zd?49VZ!|6I6TP`H*9#Lz+2(NG!2c?=a#;2hW(gMh+Gm`}rH)DG%~fWaA5CjJrF0wQhKoDbuP^CTq?5h|ep zSG)^T7pyk;#al4D-cX^Z6WzCQCq6GYV z7;i>F=f`hu46CLEe$1RKi1Q5Kz8I^yR4bRb)cWaH*2>DtD$)skr$uk@PEIC6J~5`x z-(3adNaJC0DiFMzsUFD+Jnz6~0WXwZ0(~LvtKGTrQ_&Y*_h;6*$a>xMd^{hr^X4Xs zSfHCU1Kp$fX-LMS`gAak?u zuBN22FmYRBij0EOvM*FQxSvicuT#@>VjWhJcIxKLE~<2K*4I`JbE8E7VlVSavv1r7wgm;O^WZf zR)MlG*^c5)Y`qtBzg-soS+WEAuwh>4!!Q#mr@6#8>E{iZR9|Z&Ur4-Mc^(tU$6`gA z)??6s3-d+^`aqTlLV>u{`s29(_gv)VS_Vl4WTQy8r4}7&yvHy{(CFq&&+m+{Cv)o? zB$vh;^?XJ=Ohs<#E|i?OEd&E&1ubGlDw^i1UgrZp*&5Bv2tfoaAY3*D8^Gnt5ADvPovzZk;ImswBbVk zwV2oK*QC^hvt1Ir1cuHR?)<9Mw*J^EDx)8X>}&RkV2GfJ&D5=IrE~s0q9*CQL5p>)rkb!DL$O$%jDK-g;B8~jNRTufYV)2vHgUq7 z^+GZ8+j@WK65l`{`3N=7d_LFXuy{uGoyvd%y-ph>L%l>$Fq54xbY6D1rdMk{EAugg zRpj(HOQiIl5(kZNqQ~H|urnD3#v6uKw>OHAu>cog(rjf~?2W2j_)dMXkMsov$KzOV zZxov-?`jl;iFcr}TI~hS5S=rw%xqEPwhImZ;e7+T^?Rf~9CZfqc(ePMW+4O`Mshg5 zm0zc|_s$pUQQR$>arn8&kJ9;|wdYO#KSBPYrD~Q78@WrJ>^m*niYp1TDf5aQhA<5+ zhpox$5bvQEEKOe5=2?cLOrZFsdqAV$A=C78ioL_as0^IJ%dr}lNAU3Ejug00%^t~w zhfjP>H)F`L$;Lbm`_Vxe{-SgB>bejUhKLxf@^WMZYjcdHYVbZ~2pr|oNrj@{%Vl~# z`aPabEl~%JwQ~5&-P$gcluX>*h}MVHRFETY8li35Q$bn3Un{!#!zKpwI7Rge2>Wm* z;YZ<#Wnx~FGZUZ>WGGFT9C`C6Y||W9&_b7)0?HH&N!83=5&wL%-9Tv~0Yl06juocj z3DQSA-E}-E*~;RywCF4S$Y12!(vH@in2w1B3(q>O5Wv8IC-RFROxJ97&N;K=#NsEE zcD)cJdrK57Botqo1<|h|(?+a#2eJm4;H$&N7rj;S1vv$#$0Xhp(0;wh>A3M0w8!9> z2T=L(m?8tQX$c{sd-IgS5~43h%%ekvjZ@?giGvfi<>nXikU@I2sX)uKs)on(=r|9% z72lh&xvNQk=8z}_q?aql@eDan5oE%|^y$`z3ke_-My|bToybDk_|gvK?_|qgj7gHNwd~~4!`k56 zkf9%a>xP;vJv0}umTn9}2qEChTfa`iRESt1y-1!Y8#~xU$DMpC;?_V=la`)= z>UT6F5Er^hH{-I@Yx+0A?6^MDFu9Ra(yQ@2ZpG%R#}=#4v%Ubu)w+Q>0{Sr+=*NWK z1-NeS5SerAJJxfuhCf+Fpi!m9Sd4tK{rpYi)~KSg(F$1NpC-`EXI?BsJP2A&IROZs z>Y$G8nWj7WZnx>&N?K@jLq+T|LqRfY#p2v!tJVqaH_F{T@}=Ni8{hn_n|xU=KiqOH z3gZqBN^GL@)>Hxqo+YnWMbx%X69iq676&PYNn4y0-5v)VNQxBs5zk8#+ZB9QEA^IFbKl64LkN#xz_g;8cNSM(A>)5whC`M{P*k!?XrJH%?rBm zTC@qzn|mrQC!WB}ID9Dz^&GLLh>v}3+Z3M^6&1QOeo#N=w_b_&snR9FAntCkZH8fj z4y6Qt66&o? z+X%oJ$`4iO4&{MzXU`uA*7tqWAO}vW9b-qL&Mr|>9x6B z81YP*w)EvwXq0+K><(3_jlQmwO}+&&*yQcXn=QYLVA{h?zxN6@`X^H6BpF`dpk4+) z2NiV2SZIW16*?#MlM-qgEr#Rg;hJc}tj;YD%wia?-)4yL5|8EB5XxZ1MB__wIqcvY z@R~`q*0c2FV-x8&5yL<~*mYo2x_G;~@>R2_U#p=#Qn*VZ=ewXFXwng!e{$-Zg9-0H zg9v{dAvVQ((1~x68?c6b_PA_b^Vu8d_@qL^4O_8Lf&!OCTl_|Z&M15Gb0PsWsq~XS z4(?_J^8Shg`+7vaCHp4OhPlpVFf;rHEzJm|qC78M9C^ZH%;1SblX%{jl1$Ge|HA1ddbx5Bi9WEiI>HIG(MJ3@= z4MXOe20DR|{|v+s29y~L@ZLA4V?)N9hDIr^>b=kwjZiKW{?djz>uXSb2sR#MCV(xP zQ)nW0^G~K_U2#*1F~sv(y?7V_s9^~uW`|eM0H|I7p;xrM%PLl4k4h-!OS3mz3@~ov?M9MJHL~& z+jBzgdcll@++)VJ(eZp_BGa@X8$m^7!s8kI)8)(T+ENlbZt(52(sK#kk$=&dQeMO} zEO_VuTLM3iXo6;vXt+t};kLb@NFLX%_FjQWRXp?kCCw-^KFQqWZ04jNkyHAap~oyU4TrgXh9^A#E%paOb#gw*7QUDSei zS|6=r{@VjBo41EYFhHvMwIsMP;4g1+(xIM=Pg00I0UJc_4^T(drHJZG;^wf!_W2-6O^m+_;l83Y(OY&{OAt%WUx=3f zN8K!zWKFcM32IpIHsU-G~r^B919{A-XU@=m%X^n}o(T=wl$kKQ#Py1IP0Z8H! z%hly*>irH1O5jVtgecx~#knqwUQkS$qp`L&{G8dryi68(Ownq0JOS*A2@?3C7Y;e= zQmU2@`m=&@p*$y4On>tGbieUDqLAHW^tvBjHNU(aZ5kO*MjFoWwar$|m&~KyHO~{H zaD|_GrzG!bz;b4}{s2*Wo%))e{W;_*oXTOp%;@}QZ(H6VjNsOB?f4XI;bU*4ePwmx zDPa^eVhC?TL&0di?I#~gmBU4XAUstEeWuL}w9@3Nt_kc8`V<}HjsCw+2aL@)1I@GC6lxHbQzIc=rLqys=5M5DG zn)Z%O3AXR6dcp6p7+vEkfFKHMFYl1AB9zHenO&!#;2H801^?+h;``8!)?}%ne(ndk zM}G$0HYB##w(sz1c2nD#j|CzzkBxJH^j8Nh5WpMS zKPKt5T3&A6tb)Kn39HZwUPp@8UoqfEOLP%ZP}X{k`PA?!`M>7El#?R_6acAM_+Ii) zJm4k3m;l__mThJ}urt)+`Vd3dm?C^q%=Ay4;F2aGU#H9*gQF|*dHR?z4f|Vu)R^Gg zv+T_FO-X_W45Uk}RCiLxon9tpi&3~o&;`Lk4EqMNPU0*lUVs^^>jfD`PK40+qqqC! z{=+l+*q7^UkPJ?C{wU+(pn(tv4gC_-DK!h8n%DXhuR3}no6<6u-a-)2!6rYEO>Id| zjXs-Ai;IWiu}7-ZejJ3jb;p z*B8_HNmMu2<^V|-24gR*a&W1|^6#=r`v|+O7ib33WQJc91E^b3er)v?7J+>>@{%=> zp@@ijdR>H>h#%fLbv=FS6UZ#To*CnXM7wo9~8(OK9NWAO6ES0j$ILo*0crnNtWUFW|0gn?m%e^JisE1Q`ZSTIbY* z!(WgGx58R;c-oky3ARUuqnlY9!NeN8&%Hh^2jk8Ao*5Z8ZH9w>mo|Ky}GfF^sm*JwLWoBEJMop<8D{{1O0^%vS3KS zfn81k_&3T@#h^tC?GXt6U)~0^zb9=Lz)0Mx&Tb0Z=1%m(h=}OW-{4rr2z|a?lbs9F zylI$5kj3l#8yL`-v=Np-qIwT$H7NexSYbRT;_iYXECu!4w%1(kHX2iD$*79GQzBSp z$JDeH$gd`3u!Mg01qnuSR+qiVfC9vL_WSNZX3&v2pEY1DJz4)6t77itRejIX==W9c zaUE0pGKPB2r=Z})cO?!A{BiB6k0Id9ir?laxMC z-lhb~$lBvt@;XD(pc57P`v3x|_5|Lz5e0OOJmC*wxqU~EBck+bJ`GU)2(Ay=s_xYT zlLX`G7H(QXtli{32Pm&gnBZm1wFV~X)&Hk_e6YipAVH9&qG6yI$Iaa}VGg5_!Tu}) z-~l*CX*hjW(nKEPGYkU2s%CP@b#*a$5F^<@kDq6JB5^#;qv{X3goly^VtUK!IYwrf zCgQ>ts*38~$#Ykz7zp`W>J)ZW9~;!D20WTECp_Io^$n)ik@8}`>_~_{6-stR!3*{u z%HzG92^H?juu;NceFA0~MgJ(k9S-W&zO&8;lcjZ#FHH^HQ(;y{8wp8B!O|dyqy#k% z&g!}U;MR?`&iSaYpwNBvn5*32!_Q^I`R~vFpj2a2VTeEaXnrXF07+yL~c(}Pg;q!vctW_mtWhMx&_#&Ja!QA}=ZGrhA zykaC8P+5JzH5*OkAKrJzl?o%C&qV1|C~?v}cQDA!0VsmN-t38BuRBCNKe zKkd&1+WxF1bXv-ZeUTWw3nwq@pXA?Dy`*DfHR0rR)hrCp;0X0A(3^3`ZMJ1Z{|8KK zf{ssc{ogz(l(mZz3dm86*TE`6enB=<>Lio|xUf53=5e2D%<3LJ0 zqE6=ad@~O!Xda_^j8c__Q*0ownfOwiov8?;(8cL~YBYO`+axD|wEbY(*E0UE%7;3j z(8ehg^7Sn{>V?IkmaL+d1l<``;?bqDeqO_-E|^(<+r2wx!89n2=)@T9ZY4)SzBlY% zy*PVovdr>soK}IR&aF!LGbcN&tig#&Sj(@5NLo76~rWlD0TJXvlB=qZRzA z6i}#dkEIQJFGl-HLQ(sJ?C}= zbO#r|%yMa;_1_;42L<1w3q8x}oN`wsFwZ2I6Nb#_E9z|2{p3{}H5@klSrx%7919KoJ`|PudnA5-twOaJ=V*T&V@IMIpWm`}&s7xoYaA5aI1{SjLl&RJF&* zw_l5-WCtqkOpBff$x<N@#~aI&MG%x6myH)Zv~kA3bC za!<%kJ=tDhYxFu<#)3lVEw+ z_SJh*K7)IdM0^bo3LGgi8^b$)i-h2<+xV!iWz6DWvs*qt=ET=~gQs6^G>KS`JGV2% zhi-mv>ALcJF0_&Q?>qCJ|`;G+N*Ks!^ua|~=a5C*ezN&IEp7~|1P5{}zgC9~)D>GPp zKZk3_86+r2OUudnT$BQnKkfI@E+YyG3I^N5w6}RWkLeHsr13mC{$?<@9g`fevclNX z1;2W=^;MV#1@_`lS@*6yB4m^?w}QL8&>(=eJS^U?wolJ(J*dPXOv>1y~nX*%tz z?ayQ)?#=~iJw1q$XQlr2$){iY_>&;7kh(`ItjelU8cI$A%g_)nOhHiW3#53My2`?| zM3G>K(7p=N3Duh88VDTzAB`x@=OCMC^uHyC2d%%71F3#{IXk=zFXmIF<6y@dS^cWd zO|ME2XD0$X$jd25m4+$kKfvI$8C{gr2zVyjlfBm+)HO+r59?H)Ie*}JQCXwl$#gT$RX!M6dAFA8{-uci(5{g0f-zKl z-1}FC8R%r@b8z#LHx*zct_~}{ZQs~*sSIKYQZ$VMxR(e9(wM@~FMdwY>WKk5&gjRh z$O$S#S9d}jKjC>;8E(-Z?AhU`&R_%WsvM6_&s^tZdMCvHkV*s(o(7ky|4k~r*###? zoXnL5)t{!yHlciVe2*{^P(t)V5MKc5lZN40Z-Qdj>WXcLzXkE{bHgYJ5z!tppQK$& zKdar_@8&-~%To^7CN~#)S)6Z>ujCef=iV0lHVLCEkudL%q+ zEDTnL_iAGkIVRS^TCS|DbDivyqO#SBJbu8?YB~&^`!@mg^GyV$w+piyOj|KIxxWs zz0DEQL(eltX-vUhXZcFiwv549c>ioV1W9r9R~_rdvAps#RL2;_w;`WP()cpXliPb# zYEfi*FP}~eq&D?CKw8B6RYc0p1~`-7Y=6eC0euDjU>A(->7rm=@qKDF*7Wx)fqq^< zMBrcwSVsbE;Iq7dY2WxF2}umQdi>%?MXc(o0+6CtkPnm>Y4n&1BeuQsA~En*+o!GD z!tp4HE{ayQe603&UopL&b$`JBhdSF7TQbfLmkUw?JViDY*-uCu3( z|5PF3t76va7lh~r%WblP(XA{^Sm;LIDJ&EVC3hHb2}n|FG71x=jCGop9MJuIl;h(c zoXnUXrE%EyxBV(0@8~Q)Np1#IUOtCB0nxcOd zuyG%=tOzI!nY)2XS6~03qa6%1Jdvqhdef8pS2YtxS&m)3W*-_*8S}qlROvkD_guTf z?pm0rCHFh<-;YS;OiN90JU;{i>oHtfAJF;$RVFcm3u@Pxem4E*CS`)3o37q0{PZEN z%knw!Zw`4Imhh^wZjZMeDg@y7VXK#V`*2PtETOdh0RbZR1nfVRfJ;x)I|KbJ&apiw*x{7&=y4<6 zv+aYg=1$`_W{WgXM!kFAo34#o=oy^8q2O>QOR-{Ov&Y!c7}LiOm)cc5XPdS=W=)}# zLk!dR`;0(nlJG_keDeG>+gEDL&QG+RW{CfMrz$d75|&I;00s`x;;F13di2tr8u5$K!)|Y!bu5)}wiva&8GB!)*>(>f zWld10EwpB?{-e0|uOvId19L@aGPnIpK9=21N!jM_E5{W=!Q|QDLrO3k%-kcLn(;jy zlG;&$uI~^Dwy%F-%&*M%>lsu@iFOBv)@swO{YpY1Aq!GgjZ&nyv)jssG~Aq9f&F)L z2sLhqLIpk<)#3kX0;vCP0*Zh_Rcsqf4|WqIqlJv@%O|(Y>+{QzJpW#ElGf?xG7;b1cFDb}BQig_{%Gm? zJ8`~s;L3qfc$~S@D(~!NZ+{NP<>#X)wKOSD+je20j3fv4qgPw9@ztOSoc4#iKK=NI zEtCMLn6TS{sO?E&u2cxRIb~usOt;-r)%-+G&z8OQKqa^f)c2B>ih32zO}xg7hbZt< z9Py?%GdtGo`#eNPJNROt5sYE*#I;jP9w(koilMmXGXii#H=M$>n%36^#m_eWN@X(G zXnpH|Qf$I^tFX_M#G*zL7d5bDxiRPv_HEJR&akg;+Lkl$^Fn%tg=^VIU&;}=xGz0R z&}c6))2$Tu_OTB67y@MdLub0NQ?zg0_2RsN-pu6-o*oc`(8)3VA3efpOb0LU@gs!4 z5+4cNXcb;TZB+YX5&I1s62QU7bJmFuA8z5Y98Jh-qNUvBwaMQ|Y?@p-OHug;mR}pK zEG#mBh2~Y>4`0hi+pPcUA-3ljtIe;rTRN@DeakREeune^m8uoLx$HR)r@%)1{{_R9 z(Y2z8V6FPjj3P=-x@Y1IXo*dnrx6@!4QWGJKL;iPjjX=a3LSpuX(*N>`abxT+dqAr z$MZ)&_Y~=FB0i0F8uv;!XQX&IYFf*6XA`3~VMxbK?7-Vy$8e5U6$yVE#~%fN6Mad% z$@OG|Sz9>J1_+SBN~-P^`%&ZFDJiRuAvn*2RS3QrwxeJN^lO>8Gq)q*Oo*`ar(#j8 zF{a%fz3MnD)b=35M7q9^?dNytKCprKGvFmKiQRoHKS<7-HuE~3FB7=gxPYVYewhD! zx;{r`@I{8`I!I0Y$hD~>uk5<&4ely(ImP2(-{_jeSB(*tZ0C1@a+`Zxsn}(*{@OjB zPbOt=893yUj&+;{FM6ObH@@8tIt+&()}d=7(y*{SxISAswlQRNiYtux99WXXm+2hW z3m56-e4CbsXIH$=n)^w=F;ja=4ELST}>5#_U)6>pR6bQvcyGfnvc0iWuoVNQt9&$c56-xa%)o@WKRYT$w^4X)#!PkF;1TNK= zvLw~it)Tbvs2>FdvxW$(;$5_?RPi{J91VZVZU3|UnEWu0v*uCAKswKHvq5XB9B`U# zxD!JG=1|XDlvw{P%1^Q|wWOUU6mavc){L(1v=vIt7EuFYo9mU^)c!reltPaVQ}Boh zdCJwQRwAISGJ^1bFjc>|Mv&a>?FdtAMBN z%1Q~{^+Pv>5G`#mn9B(pj>0}(Nc2m4?VR&#$1`N}c`Fw);+V@+;aRwtA5(hJILF#6 zV#m?|nv0O|SqUQiFsrtf|IQ~V1Q|M9y5Mibm@6mI^1ZP>7T5t<2Ia~Vmr1V_iOEc+z>*UW+ru|DFz0FX5RUlI5ZJ1E^R}N+U60{H-vdgoBd9X zV)mOtIp?x#hq`cKaXYh~z#=v)cv%?s-%aCaP_)|+O z-QAU`P&fS)6a>ts72erQnKl!v*lshp{^M-?!;6b8)nPhNS&IH~m^8giLJr~jYJ&At z2@I}22dO-CMh*Gp!FuNESi$6mlLD0f01@DBOe6+%DH|5|r2jbad+L6%8Stfdu`$bZ2J$|Y$;4jXH9|X_uU}TkQhmjt2`{6YR<=5LHt9_|j+;4_NdVNV z$cQg_vP5T{s~3PerUE#D(kr$3GtlE!)&!t&_-{Rq$@!Pn*(*zix4yPoyhfrz6YyX| z5Cp;4(Q?z;FJAn%@?t(ONAF%+*P>!Nuk<$eIAhVxjj}l5>f2E3by{4Fuws>k7WXb5 zehvANRCJ8g!-s?ISw7%!yC}5Tv#fP)VP+-aNvB}35?@{=SASbo+2pJ>L z4|~nk*7*~87F$@9c0_g#&H|I zmE+)5*nWc*AD_)8NcS(6m*{#)+LDC-UelK{mGF|>dCr%<=7kxP7>S&h`xak|bngV5 z3>X)t-XlijCDih7X8yPgh>EgAs)&!)>B~4%M97duOnh3^gGMl%v@JA++7J`l5UA$@B5d(Vw8}-JDd`eqZ$j;L7fx@P1@EO>LIY=QeY0)ov8-2`xv3DS{r$zs=r{ zDYL#kotIQfW|+*i41B%N$Ntq;?`+r0MuJ+^TppdyV~G^R5Dt1$&Hj+TD=%T1vNJMT zK>@_Ip5HTco9oGJQH;_29>&Pqhi({p_M48XQYu40nje8~e`#q#8j&*Kb)G`h{qrMM z+l=S0eEOEFtM=@dv&%URu59cYYQBYBEX^noihp~CNW(^9vi13{w>PV>C|fVOYK2u% zQPi;z%DIt>*ld3I#}v{#2&N7(SfdLSk2_*j#t(_NlPa$_s%nyU9v@q=lxM-6s;6-a z&204H4`BXwz1yWQJaJrSLsffN2rhA}Ehdp|F5feky7T%Cy6suu3w<0m)JfZT$SfT{ ziBz@(c3ANQCFPTfka43$uglX^Kd-qcY@8PZA@i|xAcW_72gZz=;!;lTY@t{#w_M8y zs_nKbfDm%fNYjmTii;Y@QtIfaD1qQADKH0_;XADVOQDb@aSz7jaoPDfb)~BvTIR{> zu~qKY=yvvu&1p02!J~D(O&5jOdR|&H&Ac2QgVhgR|1}^Y{xLXto)k=Ny^+Q<6xfp8 zsZgHfSHIc6Nn4w$XN5=nhqVin-k=mRv1B%z7Ku@9qeY4RvFl!6O9kcZ)|Me@g9J{_ zXmD_HU=FF>3Kgzt#YMd03RV1A!wJze%y&0BJ_oZi0q;R%mRO0ZiuTD-F$x}X!h&oY z1Sn7A(IFwKd3{gh{xW;!jHoy)4ZcYz={#3>GBLo_Z_PNbWwtiT4*$;}B9CLtMVS4~ zTipZwj|vO?Jt1WRqp|+Qo9U86vWaK+P&FLkBS6pqNSEC)iP2mw&j-`L!@E71_BD>P z;7~57Hd*(W{5{P6f- zEl^a5@`)UnH=^IA>Au+cC^vLjw!uH`AjG~Ks8m35X!~vF&iQCuTGK1P5gwx&TQIxQ z7trlp8KEorLj#h}w`uAwjOdO!iz60Nu+3$jA6f!`{?D8TRP2BpJ36(tUustNQ<51s z0Ue$g6q%Tq7%lgF!u?;f%ZEcl7c%r|6X`)ZBc0;-85gst+~0^@1wfqpy*3`zrM)w7 z9=tXgio1Cs%hZsi*`HVSsUSzc&MO2Z*3;ExI!-*k)YtEi@6y6a7bo=nf37gJJJ9<~ z*fwGT9~`CmP$S7fajl){_Dg`;9Vvj)HOW?IGeuI)N!Zi*t9eT7?OEqkrGK%qY{9Q^ zmdVPaB{r5%^J6RvfsVB!8A@v1za)E0UDijK(M~OnxVpLvL6PBctk4@aY!~);ol4aC z8L%O&5G*{)S^E{Tu>hNx4%ywa{17SUBVk`ZO1X~?JN7>W1&Ox4w)#0yK^-W~ODFC6 zPoVaSKOFG3aStPt2z8$Qc))#?G0zF=>z?z`b#!IZ2Z{v?Gi)>FUGxkz6 zKct?779WsSXR!?6)bSPzYx{Zzx;rzx@K_n`gLQXPy1W7vs{$*F)_8$ zAfbCs+>Cf^I=|2{-->pzrtb9=g41AcWZ`1lJ@p#f%EDgmINbMSkXv*qSg_R25^ytc zu{>;tl$G2&jkO3Ql=_|o^@%>q$?xyXQ0n=6kpLKte}3psjzkVa9ZC6n1BU*iR}tWy zg+Kf?9_?-AEzBZPg5JE8P70a=hl)(UN;Y-t!7d9_#fr&cZu-hgdzsuaQUAcf zV@~(7-*LEcBKuLMx?i3h*G(Qe-)JU(d;BXN3=8S|{|II&<1Y~$Wy7@Mx$k{$rr6?p zsAf*sV?*n^tQqcCdeS%@k7LC35+46}PwL?&2y9l-NE1Zpq$(=CCdElnU3M=E3Iy3- z;SjB|o4n3^km;imXx|gTvUZ)JqC-P_$8vJ)$x*eHuOQ`;Xo~FqIJ84PAODXtP)%$} z7q}qSPNd-fbLWPu__*y5R%^H2{4CoKtUj4&Vtsut?`=r#%xqADtTtMg=I zlGAdxyo}qrvqGth~c@8Rc7qxqa=&ZX(Pz4j_+t?mBNcF_?1T|;r< zLY-1nRGRx_IN){XmTZS9|8HfD3F;WCSX8ry6LZ^@{W}ccG7K@ix|kPJ*8#I0p&Lg{9|9|;Zb5VaZ_64~7R{=|H} z?!`!HlKrTx=!}2HRsZ`YJOLqF$QLM3Z<3442mR(#wxz>tpwC3rJJS^0cST7L(i2ht z@hHkfNNo5!ji(UauWOlgZ{ji7nGJn=h&8ZqbooP^n=ky4wOPao5=KSG?>6`E?X(Spr8(1XHeTjZ*JTxv{a2OD$xO7rjmj~71Ukt80kH8+Ww z*B&z&=X#U5KvAD(f*5zLbpA1Oeg)_DxJ&o-}k82Tr z6B=cQHBw=oDLKZAqFMBcS@HUAG#Ep_Hn8SZk-3geY87BX!oAFYc@y{PcwWxXY>^4C zFKzEW!?Sb4wfEJZno-j`Xl=oGjc9@)BBU8Xm@R$Dq^Zj5H_7w6sW@`h*OVP;e{$%PAGOV%%FRJC`eUkX{FWV;zUh5-)*9%PP&MT9FL(?e? ze~{#X&BElX=wSV%Iyu1{zJl1+2@ew>kn|yF_F_E9QC{-@@Tb0@&Rd8R}$$ zsPJmteVD$3I=#9N>z<7ru5O2eyiSpAo6^pe0D49bFPt;js$eb!-W za1C>mq**2%B}n5+8yDm^*R zfWT5zxEsK*z6^P>8AdSuKxv(}zo3KYrA24;WBTPVB`+~*T>28aMbYxlaN@uY*S*fG zvR1xQ)wc~!5qb@Tk(@Thn_ymH*(?)q{W&1>VWRz?d8IVY0k+eS;-lqBS`W3HV9emi z@3R8(hR)s>ye)fue__mJ*#HbutVIu$77hO?7?5$M& zXx6WW!_p+&+#HA9_HN>U@%i9_x!b{?mb1&?af!N2h zZj7=vIr>(odFSw9Jqnca$w z+gasdYj3D5C&;@M<6mZCJ#79+4kwWZphf)1){~x8M3ZX70)j1Qz|RkjHH+#UY>)#( zqBX(;ECg0zGy*vZ^8utOL4XkAMr7%iT~PTCyVhIq8uxClZgI|S!SZyQ0O!n@BAk3G z<6**Irl$mLYnI+<*0%zM();OD%OYbd&s4^S^y7AS9Jg;;&X6gT2cwiXd6Oy3C7>eiJ zgHBDwKOp7I&US#w9~q*bKOSH<&f@vG_Y!*r3@ple-wa1}5(e^_BDF$Wr_Iqb%6g=j z#a5V<-+eDN{S3(fzGN$GRt$J#frR7BY;kLIZg^VkBhU!Goh?lh1Y$vy4fBf&ORrir zDliF$~tUWsk$Ws=ejA1CU`l{%)6$oF22fl@r!A&b8%fV&qNvuq0f zP>6QV-i|DTHci6mHGCicl#arP%?!EQF?F%LqQVF#0z*Qznt%K=5zR1yIlXF)iZ|XO z4?3}J*l3}?80JP(s|e3=aQyN=9r^=n0!Y!>IyVccR1sWU2);8h#z5h!LAa0`u_?+(J z$&7V%^>!ra=`*iJ$x~cfV}-v70(Y#+w)Df;6x1^;ZY{Y${v>VkW4ydrfwR}o{?dNg ztLs`rLd@%!<5kuvVV#;0Ui#%rc;d}^Mb#AwaT%W(&qD(Ij7!z_gVnafp0uZ)>3R*g zIR0u2v*;W1AY;!LkYCIvb?#o7%b(l5X6Xbd+?cx2=4Q5&(ip!aO*?N^Xm{YRF1@D< ze#0urrkdMlS^#VTyREk)>Z*=C^c=8=&o!&M+zKwi#EK&PXcfYDeU5~hp|AfU4G#+*SxrX9 zb8Ya2#$D%MI^iKjSL0?Gpe|=RLMrS_<~M3DSl?A2rx%SxHxmc%I93Jr6wD_Jnbj;Z zV)OBDA~&vn6k?YpI_{_p9%V`^>HNv>V$>bD$ksdHASYiUM}%=W)*4E+c>j9{)Hj1` z6jO1rzc+GXr1J8i5{QIU{c7w)>&I$T181kwja{Aiv*Q({m1l!dqBw4L&@r(x<|VZuD}r;CVM-ol@wHu;SGa+cexKZT*?Lml!|6p%rly-CDjM>f^dq!j?QC%F{-VTuiS!{Rq@8nJ|WH;BZ= zq&3{vHd*|IpG=5+2QL5EAI#>czE1=osPHu3Lg-4kUmJl6fKGvaf0OYBJ>8#9*L!uP z;+q~4tikEbmgk|YC+C!NeJyOba@!^mzemk^ho9Hl!ZUv+eKKy;J$M5|zq+Kc& zbfMAmB`_(7EqYa=Sx?p%xDa8s;%0V>12OfN0D&_&Blbs1*mJAvfHyW>>2 zIstT{c`Rk%p1EW2_gGlcPPEJahIE6893N-FWB*jK2;SScC<@q zmAr~wSx6`r1%d1U7nt@Qnl2%ZAEr>$1hh2MVF&dYykf z<3h?(7ru{W|6Ita^`Lu%irNii6|71JLE^&mzFT6t;I^IK?#0aD=uxoCw+^JZ5W^}S z;DRn4K&Y=VKb^Fc?VXrPVY$D!i+$q7c3%RfUQOop5p;zmS@zVHVj0Z3bprZn(a$2xOE*{vCoyzyA+UZvmCn^L-CL64D4# zN+U{#bhk)%w@7z`bc1wk9)`#w7-Ln4JJcyv5~G+;z` z+`>@5TrpWEyAq^;YsBv8~4;AWTj)=9|*832~AB=WTptt-79HStZs@0AnCTzc%PJvzVInx&&`{VPobj2W`CZ`@+_(-Ksk@@dbN^2o!E?|L5D%g z|LTY5I4pdKt%vYNJyQ0&HH1nuSBBdw2;KK$oXQXkq}$-9R#0kupX`5TWnH*wxvro5W*9#w;6srA`RwSto?``+ znqbj3O(G2OHyfP|F1JsAx?jS>8tdz0Bo1I?Mp>#>g#Y45RIyrey7<%Y?Y11B6@9z? zIV#G5(g5QrOAyqTP-5QKibn7)fG1E14D`zaMt*E3aCRQh2|KCA}*65L``~ zrl4v4me;_udhHIAI3^m}(wwQh13eG0xK_Do)^H}bow$ApqOIhEc`$B_-TaN zXYu*gxK5L$kgh$=v;Jco5^t-@wFzuqLi|wW7|!pve}ynO0}ARt_`YFhL@rpzsuUAJ z%toom*`H~X>sBxRW6$x}`{)_VpThrM_^>vnK)3oo>H>tb*&6EHSA*%vu!i&!hm}0l zqsB+z#h!D3-K^Bsu{Tew9~sn4<6ghd$J%H3!=$2_snfi%>s|WYyxz!3(C3Kz>bh3S z8L+~qzl`%QxdlEPJbwBQ*Z=pWCEbIlgq!V=kqrOBAX)X+>t81f=%UhKmnHLSTDHb< zGwHDmuJpW*qZ}L>ny2;AUB~`!Yk2u1ov>Ji5c5%wAJ+~K~ zI$ROTg{o2Z)H8=q%p7lmt)p0sl{YJeEhVK*EDOOoRoW7wV!5Qo%hoVGpbk8=`g~ru zFbAKc@OyU8lu@91Kh-kGp7Vt;$%o)574`MGnzZX?{rKY>jWHFqZ$(9Fg?+%OT`tr2 zDvc?(~%0zGU#ATXEe?Swu7RGwxYC(@Mv(h}TIX z6@&WG{#mcGwWG8%_V;|pAkot7jmz0)Lr0ib%dh;n1R^xtmuraBIaI(*4E8EMxo!^} zwY7-Naxz%s1lyneBrm9=fU&0ifW#fn{T7r zByt>2wNZ<%T_we3=q8-n7a%P~vEf&&ym1G{yTx8E%I)$6IfqRXU9laHEJB6kID%Fq2&i{W5Rny0m;LN;c*qhKHb znc&(yZ+z{V*2M0q?OEipQWm&cfl!y$@SpeW$fR{_$&YQ~w{)@H$MNYMKE~|{`?&nK zx%79siXS4`|L-BPS=-XBY>5-;NJ~v?{;c-9m?s|Qg=$gtdqP|kmrt??)O4im1t+|r zz#yyG7GU|LBIhp26cwEF)vhSjBAeRZozZPgNQj`u_({pY1zlp{+x|p{#$V8WX>CWu z1R|W=Kb}t|w4mXjJ=d&}2?1syZ!a3T6l#l^z13QLN_gYlvs(6=| z6T4fltud)o>Js&5=%Ud2WHNtl^dg6cnu=LE-&f17gZZQ88r5*e)BDdWgV&_dNv&`rCzadno9#+gYnw|Bqc~f}7JV;psk+|O*O$77 zoZZeAI&xL-?Pp6P^q2R2byFS~x$Ww?I?3ASOo&m^-mASa)p#aix+op@J^FSwprZC zh_v+Gl414vZ{US6utgt(F4Q}Cqs=DAo}ZA7C<)PR_7XP=bC16YAMNS}lOpIcuc#E%K;HP4`19zUIeuDf1gA}#o4^j zidE$FqVE0;VWODa?#)atG@l)AR$?`<2WG6Bk0%ns30+)BB&vQFiVF)6LJ@MzmS~fY z|KliVdcjDZfRpo}efD8W+e<8tpNQxcJ&{#`qYHWct=Ud@@_mRsqnUx-XET+fA*&sH zs*q{2xEyx4tEpD&s+t>^wNU@+nCi1n2r#F?(=%TJ;SrN2Z?xEg(j(?V17Bc$zD{VH zl6SV>v0L|>e#YI#EoNqKRiG+rf;Trr#-S)r@`>8oHnnVfBT11P$?*M;FOs?$ld4XH zre^l}`JRT?l6NNm_neqO3VZ!G%qG3JD9<1Ib#o4st{<4cHmc&7v`Ww>6TeQ^(w;tD zpbIyv=JB({If#>r|7|}Lr8Ua;oHgdfl$HLmEQgSmdM0|y68>^;t=eoW9{q^$J;Ig= z<*n!zi~lPD_lM76i8bJrhRaCcCdz-ENYOvkq~k!qGYc>RER_Nns0o}rI)vmIePF}(p&8vo|QgB(J=eLdM znk+b(6x86&C@O;Jt6&j{VZC8O_4={J;nK{g5`3;wISbos6Oq}(_cV=QWnT4p`or8u z1qYOX#lCUkEcmXEsMK`7Bg<_?dt@Snv1#SDHp@nthu5go-H$Y5M75sq>EA0o=gszK zWkcz|&p~6k3HgWtIm5lj6(}wAV>t$&Aq;(nUphTv83*?rOU z@N%|4aXn|W=sIVvGvj;xAr8|)YU&SMb8?-turC#dSc`1GuspVtEtZ{i=aqIX*r_iWOdl?NhS+h6D*F#fLU zCm30FOHkzyCW{++;IEbw6Lb1ApB$8F>^lR~RTXMq)+nzPxrce5maguSLAF_Pc8Y0~ z{XK-b|2GU-=fBt)bc5RJMYyFm-^EgtyK(bssZ8C;<#b==8Mhe%mR?*xxU${YfL9)NGuZ% z?V|Z|W6Rw7DX4a55V<{drb^FAArlkXUiSCC)yn;VQqy~NV*6!WT)Rv8yC4-ZmzRyr z5Z2`iz9~w$N(2rrsYk?9{&N!z`$Z)R{t^Q2hwN?K_dGnG@J3Ey5#M2l*w;jtAm?nD zzQ(Sv`%GVMq!d^E$RkZO@u9Rz_~Bmb{qJ?%g2>ySZ4?cPeAlaw7xd$?NWpJpqME(O z`#@UzaJ~J})Gb}7+~ByQk_VonA+Mx4k*BD%^zL27N=x|fY74nmnWT!H>3l`!VUnwb z8-7E0bb1Gq6uaBsg%Wy_*RlLKEU1nx#TYawn12n8mJjHf znU#see?Ej0l@DSvHw%oW{uB(u`m#m!g4%zVG$pHD>9L4=GkQ*h0_`}QR9v6SqAxc0 z_L;HgaAxLsu}4CgNXE5UUX1GZPr?@3>(ZvU`u=eo13tp7x)xE4&0n{L2T{w3gmahw zs(zjDl)je?Om{!^8gDPHDg8Li$t@V5uf(3wc6%-rNcSUvSc}g~UJcLVtJM$~8(5LG zVPDt~sKS9AI<#s)5{>R;Z1)gu`mb1-<>s*kq?}MSI!a~AJ+aMre3E=_j+{9)xLjsW zEb(5dVijckQ!Pvlwd;>|@`VE4Z!6k4apZM}q3_sBxZp5FGD0n(We( zy>bLYg1!Fa`y97s)@b9){V(38dv8!SC>TcvRr~NKFAZFzU6efoEj`U}ArZf4E%QER z-uN$e6co=P1^Q{K=YB?=rAOWO)z`@U7_lN6&KxdJpaqvup}7m@NxZ5f0ZGUF0em`F z;G|von%Obq1e=60L996W&rl9@pvYTvMKWh+$Uj)}#+~oAGk)2K8VYL)EqzZw;&T>@ zt}njG^eDb-0v#Ho>(MUUh!YXTEKYx63bez0 z5U170v|ebz*UVguUwkMvA`s-?8{& zv)4mYrWPk+Jb9JJDH>W+_^hO+=2}ipGx6(asQmW#vMCA>C52fxqM3&WWaXR5`j=m@ z8M3;;AwfVL#2>4Ylqri4?KhknA!duU#t|orQh^mmn3 z<-}(!O<-5kPbEL8;IofojFyG78h%^&SLWt8l>)ng85&(yUymtgRQk3PlvS!YS2&Db z8>M-ldhHu?nI)G0SSxnIdg3Yb2tHrN{N$R|#wYgqd?a;Pp4XfaUG~(aM;w@M_s(f1;=^bnQAVn2?`^%~H zXlf| zw%EdD_|mL;8jpiimbp*Os!+fQD-^AFt;^+lfaXWaN`(0%pc(tlgpJ)3JILSk7&vXSKR>`)%Q3Wq8n4ueI_ z#Qs4;ec*`-Aq(lFbbMUkRMq!LSkd7j1r(Gyw_>|TK9`~E>0EXzHIJz!mwz8<3`Mq4 zk%mZS@snR2v-@J(`9J#9bWJsw@)8B($U-gN4>Xf28t4t=+jJ6eu>>%^$={?0ql(#%Q2iJl?97|{>(RT~%Hw6D4c z3N-k5lNAnNmy#R7%=8YANC)UgVRfYWC&wz4NacTPXt3E=#(Rp(G=7nVZisAd7{0ql zPRNFnTg1Ub76TA)Y&nte^djz(pcZH!Di{i`kTv41#lLdD^xy8n7iwRP$4|E~op5SEPPl&D4;~zf{hC=gwBjUDBQ7jG-TfBP zk8a-O^3QNUa}u|q;#APD3>oicc}lhh$GgPcc)~qRv;JJzsgUk%G%ezcwCObDIb>XS z+1C zCfO?X<*iCQ;@w>TxwdAy#`2zbtv=o=(C{}wKMDG~xh@Ga?vsk`(&ABmowwa68xrg~Iq`>0u&KF+wGm?%ru%+;t}s;hhS*B|WSXqkR$ zG~}2#@QyJ#Efw^ALz^3lzZr=IOV(5i(U-5qAjxB43+)A|*N4&?7AsFJBe6yEEA{-5 z7x=oxX#@(*#+s={*LH{a2u??9X7pTbTN^BKVMEnyD_8bTl(r}JJx<^M+7ALR9l?DO zvbdKnEFUaG5hKP4+MH`}!RHy#*{v|^q&uOSg4<3bS;3OYIgT|I494d%62Q#0sn%5|Nv zkQ>2nK0_5%GO5D23Zz@pS6<*@w{h94)0LIJY%?PEp0;~2mf4b>|N|)PD1=}DHaECRD(qh{m$~v7d^&l^*No{@ z=Eg!bKjV(ZShg3gFll>#yk&C~t_11f?vbM+iR6P?6(^#f?Ki*Pkhu*6w|)7PIbE(} z(fwBka)VxM-nr;&|K|lL+>aI!AmPZJ`TWUw8x>3BF_m$0|MP2>FwlDITC+!ZvC~&t zE^2aJwyqN`Srniv|Lc(QbaS%3Nmh!b8_zi!Z=nOt^nXu`9US5AoP+t?3**BRKO#76 z>lw~?Z2FZ<2UdzAyR;Df0k{}i&A$+Qk^cJ%<*JhB=t}4F+B)pt6sA`}WbOtT(o5JM zv|uf)Bn3L`VkIrU5MXRBIGz7BVXoxIz83$=Q=x6gs2I$^MWdCb-}8~PB7r&hDM8T=ud!=EK49-1W*`ZOI8 z8aVX!-P~vfBlhsJ7k_2OeAvs0GTDk5J03qbckZH(Gsb{705KHtKJiD1c~cyFnuItl zCvnn8N3+JwJzhwiX30{mKQobhs}~<+4E0?$6}isbQ;?%bEE-k}^{C~E;oJ7FbRfmb z)RR4ov^!)*X^_Q@ZCLcYI$Y1`Lzw(GP!Rk{%G#=&rMuT+&@$7w5^JrfsI|vLB6%}b zNer)akW48*66Q;_E6P)=<7L0t+}jivM<4E`h*89cjXHU_QjV+-zi0-k{5(8%0!%2g zM9E_$uFxe3Hv@8vK_7%LH)W`-7ez}3J|QE60jI&{^y_-1G4xr3>i70>Bh_^oKQ)J5 z0h$gzLu!h=Qy3}IXAq*+3`86YhB5plD*Hqoc%>%Zwi&kcUdTWY9(0^bv zoAf=2dZnbLkRmew8g$+JV-pey0~v;&Lo(efYA!-kx-x9vX;BBsW5_uG- zg7#F+y1F=Y&SQzDb6EHL-_-;QEO}|?Y($3U)V%C5X1Xa zF!m?8!u#t{0Q?gll0fT3as^%!O;$w`G>!WSF!o!~>vXLRFXECnjOEpqUQU-!He+f6 zU?1YoEpy9lqUo|}Y-stgZQxR96`5%Db9>7gtA$+r2YRjfXJG{w_k`=%7lKkk;OnJC zAK?avf2)TcF%^tUI7MCk}c^nUAP*o>wu8J$4X?Ms&K5Dgs+=Jk`vT zwyEDh*$wK+^ws{18N+LYEYlkHt8J7A_h}au?X+t5PFs4K5wHqKe$wUm;zW}JjCQ;@ zF1>E0q!qamx5N$)iAJfx8oSFvG#|tkpcX1GGeVIOr@|+kJy|h&a`dDTB4bCG6n=7D z1v5B#Kw++C*K?${Cz3Q!yps?gqsQ-k{bBgolTo&o0f2Uh3^X+J)m+5&t`9du4C&VSoL;jNRTijtoqaZaRrz z>HVWU!PuLyrZYODoxR|Fv??=fiCPGxrf!>w5yD9xgUPL9J~TbU>aoS?QjmDr=a#Db z2K#lojxx1-i1fR+llcc`tg7_E&j-u2c*GR_x;5!3h7Ky9c zjF*<8*&DkF^5Ej4+viz#Wg76b84j;MgI+jbxjPQLsX?Uk-ZSF@Z?nHkL z8VOdfOIW~RD(QEht|B%SOEmm+2K=(yw~v@`KMpt89KJO)OT7uATXfJkZVG}c**Y}| z&RBS3hoA_8384lHf&nL#D1AuKMB|ekLnO0LjuATZ;O=l7iDG%IMtL}^h3{lvU*Yb0 zYj>Wh5H&@tGs!DCg#VN7!P7YAFyH4z1``2HxpX`4uBO073qMgunM(C+YgV-B+z7*` ze)Jb4ZZyxd~?zAuHx;*%BH!?hhx0=(=tUZ2UEHE$;5d%ZTX= zO|#XPe;yn0iorA^y))Q=oynjpE=$12vtf%pGLs^Ud(vV5eD1Sb*IL7sjmNqs)SdgM ztTU|Z^#n5XCP&blhyyMV7U97>t6?wDA1|2C<6gpEesS_@HI|8$j|NHf6&?QGmN9wz z``=YfJPdur`%;_?a;JkCgHq_)ScsyENkea5n*4p1Ur{9o=%MP1x91Wgz3y?V>?^)Y z!N6)7!8GFpRf$3kh);pvAsi&2dz=3LzF8I9gcR|$gTOf8PGry20x5!CHjDZ9mS=ER z9V0~pcE_-(<87DVLu~gpeBd8bW!kF6*pe99sPy(n)hk6xwSz_?p*B7u{F}zY+G#-H z#*(*;@V__b%lBnP0o64+9pXcZXn%FwQcih-MI=fd@b2)sYC+(rl}g2Q-Pi=$2+n2v zbjA&@!ZC27$|M-h-%ez>QBuMW;FTS^(jdgmq}kD)1idLpmS5H6?r|jy?p=~uYQ&bL zP({3!+(jQ3TnIoL2^oe3bC`L=e=mO=go&om`Stmj1X1CZ$w~07uR$G$5rCGJg+Q?M}i ziT193f$kM_T(%L6wJ;N{89xnQ-(9cAM83wU(Fnv5C@l>>Oz7?3*vtp1?Sqgr%r88U z6gMMG21}-{hqW;Ao}}=J3D1hFgzcj%$bj_t=O3U}a@kX9)3sjs@3<zoymi?Ie=XvD@6? zI&mPnro?a5avnNKW*mM1y%qx~VMD%ML}_%_3>R@jlUJVv6qmS(k|=Lnuk)vaH&{12 zuppYmeX@{fXGVVV%^SX)TtOQ3!(RfjClRji>OYTzd6_A==o;*qQt2yc5)ubBe0I7w zjMhA_r#q0s`;lGI-p2M{`0n&op~A8gWA}lhMCPep;UInSxfZ7D)iKYa$xFzTFIdrB zS3SJ#rz9~rHPl@BAMEAFo}!HtgE-{z$M$`WVgB%kEaxv#MWq=*>2_dZ|!K1O$j4zk@O`NMzMpn!oJ z#QHmW?#FC};-*aP^scQ)<1aQHZ;h}#7uN}id;RxHWEbO=OxO1;aT>^X7i48Qmm>pm z5WEQX46PJ7Vs(_cOnO~gi7}`DPU1p*c%U;B)rAEY_@}5z7`H3BjY+P+Dzf6K*(xQh zd=G$~piAYtvAh>#wZV>d4dpHA`yfK32F^5IU+w3n3CE4E{OllP?q06B1!5;t!9gJW zy_9O-vRvOHp{rWIS@s-0#2lJsE(fS9(umx2tvaGhESe@oa)7cBGmmx;Mt`tSSnu?) zcZ)%p$o^)a8uZOpZ151)_C(zPOckb}0k=`4;nUyO&9s5;$J<|AQ!>>i&_VgKGKyPPihhd&|ofw%=H5#ua z|AmTXfdK{h9K!j0J`}kAG`*6#p__NdkiftS!2c`8e`+<*S3f^*m3Hg7G}vylB8Au2_Nq?|q3TRc&(|v+#nD@*a4f=KQ{4FVJo&6%KuVx9 z7NK=@?Sx}BiGh~_ZH%1wGixLIr>&I4F3d|qQ$uA)=ACMy)RqPXa^tNq&L2b~N7t*8 z`kQK!K3`rozGj{l%E>J)iII1F&WRae*P}6X2<#(3Q7Mukg+I34yRd2hqcJlIoJH zZV9Hl&N90{tAgQggPhII7vGa3L(uL_fM)zAGr$BS0jpB081;2806qAj73^Q(7AXd1?suqDcGMn zWcTl%^*HjP$n58eP!MTy_w)?OKh(IQ2?LF6zst@ZMJ9ajj&ep;eRV|%-a-l4&LrhX zhg10c*jwk@yzTtirsq#E&KqpNhWUs??@;u->~Tl_fX<+_mt#LV) zeDJAVK`+4qB!osbN<;T~7|0YVDE%p`pgELXR^0dPXawI2?Wt8v{gz%PQ(>77ZU47m zEF*2^=L4TMwXV-~J$e!iTySnz0f!5!EpgjmY#VD{@O?hL65+JE>4eXg?<1h8OWpgo zkc=%8bPFxA3h5z&kEGy;6SKr;hupcSM+?qYl7{X++?0ze$Hr!>lHl9{Flj9M^1T2Z zPqi(&RGhse1A^~u`S&6EidcL+M%lp1Hzu=X&i5sP!s8uyQRW8E`TEk8cCeZ9MaUs7iPrvk7B9>X0&J+RO-)r7Z!JJJjNfPPN zZ1={ONCo4I1Gd`K4ITO*Z8>g-q2`iE(jHDDODG;EyMd@6Oa^oYxB}B#cXKLWkDv`M4Jet z__-Y(mP%BKqh*CNBL+(9~7NaCxFBXUfX5?MVEVh8^Eh^N?340L2fOK_$y-e z@5ws|0UTt-fTo(s>_JA5Zzr);02ReyanCg;9H&ckxZw=v+B8?h{A+u6)0~L=L@Mym zpW{dBlXt*!@q$edg4iaunxtnyKu)LcR(M9iR&cxB-#I8E2wz|w@S^gtF?_fPG+&|;tv32CI2>2)1BhOIZ*GYLRDvMBfEPB z+kfb1xvw_F#PWP)B}5W^bZc-wrHI=V1Sd%Pg0?XJtC4Wj5~i}trcL@nY1B>vf6%>fz zTX`24pB`#DlVK!2MvWGq|7!(e?r{3*J~r1Gg>Dy8Ao}e_OFYxPU9#<%?_6300aKz= zECIqRU`0;I9L8tc9~4m|KG)2)^DkwMRe6bBnOJUKN}D>x&ZVB*+&#z1%l*?S$r!04 z^YP1FUAo5~?8M@}t89du?wdA5p_u-B>EjF?mMwTDs+q!eh^?P&JR z6WWmTwtqCWaKOJUeH+F2VD&t`>TN9uW{4dMoFCARw{hF-V)KzAb_G))UC}xw!~_39 zE_ZG%iO9_aW%xi3E@3%XocQX`mHb}36*0Q55J&{zSs*vH9}CPZYuTFAEtjJfz6#4O zCh_s!b}nn!@%RT_o6~YV(NXVQe+&e7UitTmi$APOmtyBN5h5h(wr&rB3NpXG=znc5 zCCR1)DrVJ|J-S>5Pf73GrGR?M7~pDlk}wrbb_v@jzL9%hhJ{Cv)ZTs4=L&-^I7ui% zdZ=!C_^~ij-Q`RcC18jn>c6Te-txl`h_bM`N_>wZ|h5KOk| zV zLXmy5h1xdH!^o^Vc2q#P)flcf#F7VYm4U~`yl-5W(d=C9)(6@H<{MZDL=XBv!m00$ zfnVgaBlZL{%0Mtdw*aeL6L*fg=nObj!fW64JaHp_0WDV`K)DE5ze zI&fl|x>Y{GLx2Va;FmlZX3+40D-(G~+OA;xw+jY~*_!Wpa^121%0%aY*%aBiWpAEF z6pdLz32JbtiY7#Dx!PB^+weI0K?;F`>fKyoc%r{HyD1z={{X3r*L8ucn2ofl%b`w9} z7q>CtH`~61$iIfpn6{+s9sr_PT4aM;NVpHKuKm6iewFTp?3IP({t0ISVI3vWTPUIq z!lR`ov^IzT;!kiN?@x~?*%m>LK!lDlxKxh+IK)eOYRN&Wg-8f@BUi%QV@jUx z`Tt*^mcqy-K23IV=c>NTs|OhLIhJSUpVvkF#IfXzu?|TOPUUl0>}7u4Pis+=RVlE7 z7SJ}t{N3-WOlMtXhgWlbvo}8VlzHe!we0zsE1cA)_alOvo9 z3DiMAHD&K_d!O?!nAoX%ggR#TgZ@|&^b3W0CWQ$~FU2E4X?bOCu9r+UXTIBN zeFfWzk%*Cv|G0Jb#=tS6P@V)4==p#x@EBq+dniZVI1B7JPEazPC@10cFO=}CGLdFO|kO`vVrs840Rti)Kv;@sfUqY|! zax4QY(wo%~_iPEzi=ue)&L>5j8jxH0BrSj6daTFA6|Tc{SfX2cI4Q|Ys3R56`o7+BTR9ey zHauK_#t^j6Ys@j8-=<=3h>_udDrSJU6p&HSw*`j-Ls1wU3g6@EMDDBM8`3C7?Yfiw zSlGWeew9Ca9PR5P7chZ3`Jxb#dI-8tECf%df>i)YKt|*^jRACzND^V7FgUFE4Tw$* z)GnxGFEL`S8E7f=*5YD+16UTtBccvYT+Iftc~D+@y@iy>~ z2Q;}#9HMI~ey|YJ7hvi5e4}G$1pISNQ10q|=7%kSz1)AK(Q;8Su+DY#$;m|kq&J?g z7)f`{Vem#A{fXFFYX6HqZYqa?1uJ$61d<0-7N5`JgS4qwZbDS%4@r)OmaWezSb{cfVLDukz_QVa)S))4r?>L(E-BIDI+O)MjdE4Fmq@5W8~ z6+C#_ArMVe?5>Y+LS;O|80X(^Mn@b4_ktSbPz0p{bNU3NK1c0ukhvFUg#Fz-#-=K;tkXPD`83?r{$|Zw_+? zfMLLol8Cx%PS5_8UlCX1Xle5W!L? zTA1(rBmcY_JO0ScgGnTgWw@CnxAK}^YZC?FM`)&^A6xEc_UKjzo)%Eg{r(R^=9|K5 zLm)*^J}gC6PmS^}N>C|?f83V}8A>ZeiA1g_`5JavpPAs^4Lj~ z>Zd#TGBGY>Y%l)Dc$xYdRG$I4IwUg3E)$tHhyg{w{hDYTR zDnk6h7)=ZJiNE$c6mDp~0?DTiHkdLQ^R<$uij*VixoA%hLK&ZiVsZ8wI0YO9`rjkc z)&~F|3MY&??&}dai1kpja}J`9mHs2d=L(9otj8+PRyHudQ5>p!A)1imSb>D6R)DC@hN3{=`1OYp6fWCNPAtwm9FF_n= zcD}cD^?R#j@O=OkKonqQOC)UU35Le8IW%}w2k0wOFkcVjAx?X&v`*~Dlt!jEmt#sv zfn$)7p?9601TD;(d3m(w|I6*j(7;m$5&)!bHd|^`Zc$o(v<;N|-f}JlZH3&7g%=P_ z7EX8!$Puo`$C|TI^i?%u;hv1~q6>1Ul;6 zrb-N=!KJ5=pqJLw=Q`*u-%(Z|yQib>HIbMtjdE=qMFooiN+Be!-Ug@Di&?MnnEWr` zMYn)U0V2;)1e)1EPW#JzK+xuOrYB^E_Ts%HX|>~(mAM4`11Wq4IO^0Mj-)mFfkyg& zc?)_^M7U8|h$+`MkG1e}CV-F=DeAU|PXRpbwPLDD$?ab}90GLx0*~fw3Jd5%U19Vk zjAYz&T|K}NyVrBt89uv^7r$PBw_HaBM0Ze{ci3ff_M=nppoJa>!C-pD8<)zjL6k|9o8bPxP)V}GX=%q$^A z=+JRU(>^r;-orW9MoOIaO)KZ2!q-H6VHg=BeQBP@`#-C{ys+)#yj8FFb{ieqD`|3I z1ku1^%Q9L=5v~21ImlRUy~+plQG%v-%ngl_Rthh=FON3Ax&Ms<@y+IrhOr{>e_nu> zfLR57$&DzS&mCBif?+Dky8l3q=50?~hxL`OV_F{>ZDF+g5*EA-q-i4o4|nIsSHsKh zD!m=v2-?Chg2T`oe*kr(WwX*k(LZ0Me#2X!o?{z{jLbJkBXuJ82~nFjn-NJgA#-?m zM*3C)A}=tjfGUXMa(A_0Ge0XsFfaOW?j*S!9-Z9!Qq2RR07Rw-i*c$gk{?s!`RuL+ zT#yt9Sd^OWD#2fu4yErM9eIh9s@CP{SPv%zv6;;j1T$ACE;_ejKpI1b{zLwDdDgS2 zN#LzoDZqP8gc98~Gjw|LAvfC($A=pfnlYNw8)5J&lsZOa5pW~wKK59#A^6}zZvr8G zS+)(4CjkH!;sXI%0YG2-%jl{OkZ4%&*McHN+=j3^L~ug#*hX)5LlMx>9Q)tLQ(^#9 z{Cdm)e&h{_Ij0Bba=rraeE?IftwA#}NMTvo&`H9n{#c-aKRFbR8ouX-nv#Jj6Q!Ru zn6<}@>ImGOKnz*OOyN%`kefDhyLOa-$^PEG4VrsejkJADYa_IVl0+q)uJV#C)oJ@u z^F{zvCI;r$2U1#N_wmu63Zu;_fdB2NPKYJg#lM>nf)9nf^vE(%<|ds$RMkqIuo^<8 zm)ZSk9F$1Gs>KqNk0cYE(|(MH&D@_{VIvJpyZGJ?^ud{Gnkw1~sd~`gacY`6(BFzG z>bh|{>YaF@$|RNCoEoWw+T6{xrEJiV?Lm{A)}DMHxNzi5j};N!{Cp~p=35?30v>gI zi;X0ESUw^S9u^KBt_T@;VFi#{3;jan0&y~t2Ly0bJ!p!=M;OMNi5~z?_gRNtjOWed zB{!#*lWmQoNeb6Oa^r0BdwE0-9ulfSl-JUvFk%Gc(hfQ(IckGug_v`3@Nf+av50 z;K#qY`McPkD0P10r1yEa@AGip=WXL9)_zA*1fu1|>cn`)2y&Ut3&<0+(y#`$<;OGx zwwJxr@7Tl=BeaBRd<+>oEm1 zpn#ba2z^KY@)p4bGQ9g-ADLcV^9flU4uh>hOCy~yD`qcD`JhuyG|!!U@91#wcdkhd z!QILF0N(xw6DnZ8UR^qiVFV0s2|P!;3y^Ji2^$M*`ku!{k<8iwtK~~K?g2UY{{e`S zuRR}kC&#n(Om+a_Qzohxn0(=+&xQc;fabq{U@614rUhS{9~>N6OaG z3%o3#+0J+8foe^Hw9qHQa}$_;S`FYx zb}Yu`+uz9~0}g<#XA^va@e4<)_bIwzOLSId!m0dqrJ>xD|KNY4VY4+dZtbO3i_o!@rYXB5X|e z)08C>xve=#LbIXZM{wgJJe6SHyq5a_AtD4Prw?&;X7@50I6SpkyyP9cm37Tob=-w{ zHCgcqdYU@Qor((__NXE>>S@TT8~66b+=dS1DfQG#0|5;D#&ewmef{%)Iw!=F=0m+c z>$s-1nyyS69~!>Q+Akmbu49;ei$DS(xq8R?dKL>$*w+ zY-oxMhH~QG2mM>4~8Z`fdQeN74Bzzo_9rG?Bpd0igqw zrpNpG%%i_;5p7)K)gGc$zbEXauqKd!s=u7KO__&d`@Td;i>zHRIawnM9o6xp1|@AsBWZC+fKbh74wtbEQhZ@4-2a?fvhXry@uk*#-Bqq z5{DIIY*5cWiRFz0vaC>o%V|`tOnO&me%8^c;b`4@0c4w=jM~06Bw&PKS?{rcW?C%J z?`T$n^fOFy#5dIvL808boun!tJLGo9zjJn97B%;Q{#*6uY2-nTznKNv-YI^hh=J0; zfIHbcncYz64>Ia@+E7xg5;xDq1CYF-*A#(XGuPVc$O~C`LuKs4&2;;FM=1wRES|6_+DUQZ20ACk=*2@5XPsdl3cM5Z-SI(Y(KqG)#<_st=iXQ2m_Q&$p<<|*MN7@+U>O*+aU}I6TOq2g)R51))mqy z2AfRO#n^)gC~vZ5QDqKz^hK=z!FDZS!R85Q5x^z^faDL_4>xM(B}n_ zU1n2Im)6zah$8nBz}flWO8a|hzVIP8XkH$DYTLeX0`AvoXC-32Z;WIc>s_ya5Qe4l zZx+a&l`g3#?RHMJERz+uM!=*^;QkL-vw)!+6Rvpebh!Ypr*Kn1W}y8aw@AJm5qOR( zMtm+o_-S#HS}9{IfoC!l0258|!D^Gr6(K{ob=Kj{uH+s~43ircuwz+!@P7}pV15Z8 zyW4xIQxg=8g$BvJC$m zd7JZd;xCXs$gNx3A2>Cz+TYqFpFINS$tSUF`}f#7oE2&aCWCvax$%{m)7jD2^n^@z z3s;SQDE0t#emM3I823OS6g&XT*O(i(;l!c>U*hAK9NGs8;GMXujqhOO2W>;?zB{$) z7rdmI=#;73CxX9DLM!F`goT^DopE=?@7TE9ua`idu6e5=4xs}0D{HB_!2sAI7iNUE z5IVM!R7u*NXwE;k7O=g&XUpOkCo9s5w)qQea|JsIZ0;{9E#fjiyKcOB?MIrxmIf#U zUDvemlR8M9Ea(HQj7+my?CqcT+I3WPEMwACYAEl{0-u+$CL(h6!8TD2tE2Cc!b?=gwrN;CGe9cNN&w>S0=LQcba;_`7uO_(o6+u_ z@#|$IQG7QllE6AOCTEnQ8H zG0_ygiM}{JDqK>CI;J!%xnLM5-2$gvlmY}Fg8pfVMqTn~vBzS=1wO28b(9uB2HPKK z5P87CX32obff^s(rErKBuHJFEDE)t=y=71wT^BVvxNDH$5Zr?Vw-DSD++BmaOCTXQ zgy0_B-5r8^aCf%^cfP~(*7xiFxVP$3UCb2Bbe}%5_u6Z(eR^wI^0W$UXiseT8c44k zo)Xi=5PsR#>*dj({{#QoiBPLM*#hA_FF(r`o;p1*21EqUgjR$fXfMF@U`-lVciF9> zHp8>wb!9yfFACjJkI^+Ji+HMQO>4BmZ{!>V1Vz5|{NS+tx#SZ{c@^d z<}b7rphY-$(^WZR1@se0@|4@AnGKHH9hl1&Tj3wIc^}4o!m#@vp+)z*D{;rf#>i5X zGFB-IafrT1Zivyia@yf%I4}dc!WbNE)@OED;wrO_ZfQQwfB!g@vRKNEG7vOzdfzL4 zXn*dlEzH106bB0b3}gnOmq3Q@836Xe%wG+^@@kSxO|p3@lhbpNMwa?J{sf(v*c@3K zA6R`purjymweTIg0m?g$`m`aIA{Cmqm7qH&ilZKzhgZ`q^KSBA(ye~ixetG=wn65J z6U3$C(XQxt%E8VAb3K}M+ydVykSuSx({ocBk^rRm)U)i;pL5C4_Uv%OU6iO3WSDQ; zI`4g?=O7-zu%lkx@}o$aXcYCYWBT^24_ImNbwg?uJa&^Pz@)XwvwElKMaSru{n`#0 zBvdd(le{t^1}(2HmDct;2croJ0!Y$Iad-t9bE;hRhhxF4T}zatF^{`pLP`;C+GT3D zm8g+WFa=^CR9;`2b$g4ndMx4!fF&`?SY&NAR84n-u2h;O|ATV&h}MR^_;)< zKVrceRyOW?m=-pgp0Xo5c>MLJBw;Ts4g8wWERWAkq-b6YOg4y1He`W+;AnpUGaD2) zfKr^IlUuxQ5jQD}>#P-z#z*iv1I*8o@l;(8%U+#vK#mZ@@!QsCT zA4b2gNwsW1iLks7I{kfa3jGTH#2{8A*5i_R2$O%0%QRXSd)-~$-n$*<&W{iV^3(R# zG9UB5^vq*A?7Hg+c*D$SpaOiHY>Sqnt~;damrvlMOCoDb_=Q}jEi?$5;hVWD)|l|nol z5$$8EyUO`pU>04Ky-qpUJ7Xg~8LWKy6?fOGt8-9G#wfJB z{PW1=+pqpayTyBFw?&_;34Q!@dOgNW$=oBow>r4;27rguI6sxYJbDW)k_~LfOyh?m zrq?M^%U`GEGR1+I`bGu=gNEgN{GtFzyBpfg^S*fL0P;k!H08UO)hED?fdbQCKI(uD zUO?=o&$=nQ*&~wR}`L0a>F}YOKo#^SY$h2a=`FSs-L3 zwu>N_S_+$bYA0@c!Wk8TT42Cv?_~h`O`cj;=x!1GawI4v`hJBD^%YZ`4WWE6{qDWY z$`Ysa_0=V>isFzSyYdF~PPlkhVuoHZJ>U2KlsDIwV0|@i1I@7wG6m zuxo)hBceW%Rq*9PT^9 zZlQrKjc2HOr7;h6w(OC%V*VrywAm96-CiK)`=BN!Y6Y!T_qdx5WL0_b-F=@$^S(|1 zMU?$2BLaj4-2A0cr3X>h>Bar_U!Wcp>-$s=>aDScC|At!uz(bS!3~u8V|8KyE9))~ zmPFVcr9H^FfvZATE2>~{*ryhKy2DRNRP32D*g+aJsrei_C2X-?8p4@Tnq;_j08un& zB;FMO7~-tmZpuE>lEMNVv^A*li8J^5A+Y$lwUAf19h4W3F5$rxB3amg#B*N>-_yef z^hhUo)W0qD<}@W|kP!f3lyLOP1)TRi+Tns(g+VO>-d6u~0`N8)uRNOsA!3C^+X^?2 z7v1$4_NkLAf9O2Bb808y3HJu}lM(%sI|tD%B7M`+xW>-F$YMEO3ulvp2U|x)Yr|yn z{x7Au>Y}-Qs2ffSub zLM)g_kZ(cG22hQiK082=_l($n4o^q~4F_lg&d6LOn~|viC>Xw?GMAJb!HFnt@fFoR zz*8?=KQF8i)k+enh@afaV4N*nrs+y;BY zFtox!7QP4lIyCp@UMz2Bpusnso2DhZ&hR=rFivOKL12ae)ZhfPhgDItg9DH9sH%?8 z2OymdbklH6Q!q+oODO{~02jUXpcK0EHL68MM~2e^(uK@@ApQeTPoCt@SGlfpNfWS& zL0Tf{O}{+EqCXnoF1(1GLuFOBFfH`w2ftHF+u!X90h07<9KdqA{&lWHPUEf#Yi4Gt z1|a1YPSQ#t0~f-n39$QLTw@TttNLUECH&kjJ%CAovq3bl^E(7m%W-rn9Km*vs(J+F z+d>eNen|MXyFS}Q<j^9POe<8%P19l!l7 zRv*EEz$lE7GDOyT;O@;Z`aA(MP6!H>EzgfSIR$ac&ZIiu0@)ao(7R_<8D9`?E?z(b z#YSB-4D^3!2xur;h0Qnq*q-I5;TxaOG6-WpN@Icezbqpd#0XOT%RqkzhyxHe&x@<_ z_QZi>Ui{^VuBs6z>Q|t4=XMcawd_Bp8snvZd zJ~!;Z7H9S8HI3u-5xM?|Q4eF%Q-BJ`Du!Lb6?-9Az9p*h4;39QfFq6lh9j zW>NC%EE#C@B$vG;oyjw?iZtc}I6|Rp!43wc-aw_-pG?X9k|K1AdR2|^jK^g++XKw% zFXNA(P}S!7O?!l}Z#hzww|_F|)W7Q%rVpDHwu56%!W8H3IxT1C5Qs_0Tc$fbqtjai z5Q>j5&qPMtRX;QVxd{HmM~DkxV%Ln1FW#$=RQ-qrZIpd(LO(tLuA)uEed|E>w9$|G z=G@V$3{N0m=k9|rNUVcz)q+5NEi)Lw$$hMDaIBjC%+~CEe?jdv`#Ae@B;zbdAIl3x-S~gS45cN8{qf;Ze>O)$4B{YS4xa(de9=F4ZcI74dr(iqnNE{A$-KMTqa)RSeJ?-wx?LU5_l6sePmK{yT-r4mHz`o zWs!P*E*E!nV-fP@i;TU9!euIaC|tqT-eo(4`tO?396l) zha&u$bnGSOi(fZA-CS#X-FCnTx~BQK3sbyWwN&jK3|eVT(>3QNV&zT&xY&v=r}dHH zF<4lk_>LvhV+}_nQ?vK#T7~@`C^pj2fzF{3(Z2X=V4J=@IU!CxvIYVlAnSGinOJ*f zVErfGNOcLC6^P9Ml?>boUb}N0+dd$}=BGhorM9}Xu$Er;R)z}`n+(w+(}`(8xFIZ{vzWc$0@ur;{oE)v3^$J=e5=w zYSmzCJHsstn|`PnnyYVldFf0iEHLlQQwYn=W8f!O;}Mwp#ZLYJ8zTKx-k~rTLpB z7hD7al^T^kc*y;G>sr{8m57R>xkPCXZiVu+o`6&x@l|c^eG0UW?ly*3@&p**bw>B7!)Gc;)ywV*gG?!SUdV zNaqWbh&V_!fb40>VS$7SD($R-zXWAw?aN*D0TxbXv;!Y;?6LhDIs`4~znWoYc?&Uw zFM!_Q8huFLqk||h0=mY@`#B=z2ZxSVGBi<001eT6pRoZx{;%vCCLjz0&JZkK$mPp9 zlVWQ__?72nT8kBbI3U48R7F0Tco+zSPY#}S*oB}&{qJM*YbS$3JbA4}n z>nt6?Gg-i+?;L^v+N(5^afN!`lM-h|!gL5Z@w6}?UZhwGA#Zq%3vmUWKC{GamOPn~ zxJ{*BiV89(y=qHg9c+)W6pjq>0(pL=&BJ}{1IhZku7Sf`x!=(KtzxkKbLi`&UAzRi zkSj2NnR#yNO{*(f;X6xz_$0nSbto+9roMc_q(n^*sv`z0=c$X(+~$&4O%>w}X*-T_ z%XdWKFW1oWL0P1LtdRpxW3@r~U=bOusWI}>2n=qoQwI(P$PrZ4D-pEEcrtYgeyCJ8 z>h{oM%#(nWk5C2}FW=cSr~T?kO&J3*5SC=YuO#UbwEw?f3K$+q@|CPP<3pqD1pmHg z*>WnK6xH*1%x#gW%Z7Bk2d%;x&)}KZk6>V~U%7y4NSQFXHCyDZ%f3m7OHrsKfrdl^ zMN206@3FugMBKLy(C$XZD?@OpnqLJ{l-mxEm+0&ruqTP%=kFR3AVE&{JwJ}Ll)Gwbj-Y^k%a6AyRpG1x z3e!jgaLJAyO;IOUpRkY^DTsYINxl=lcm1r9Dee1-`owh2w&RBgWVI7?NZ8A@rP9PW zB`w$i)^j)OUO!ayYf@c2+T$yADatE6wG%+i|NcH77M#=nX%Kxl4I;#6pJj0IMV~#) zirBR;HYpdQr426<^RQD2RH%|eq{ZH=1S$YsiAaEy)OA3mNH9rTYhZ8*b%OQ^a;TyVtU}4Q&?qQ@~>*Z3-)Nfh| zT3QLXabiqkXL`l9leJpV31|`=l<%QC+`zyi?~SF6uQozM@GVlbeOJ70cUu#(16#=m z=Uk+szCZoT`e~*-#rL5%A{5-A*VwKqeeD$rE<^~pY$XxDuB3kh_K-PMu+88|-TA6D zKPxt}k!VZv*ZZEYxA3*F)|k=F(D9<;FqDz zY*CYU3Np~g2+`=5dJBQHy%v5Od5j4e0|Q7GJ!?69fgF#B_~wmBuZjQ!azZpE$YdkM zog6qW{1)*BD3C+~28?o7O?cSH!(t2|kR@6iOfq5ae>qgD1n#toLBShWJ5va zrA)yY?>rARM<2V_q%x0e$c&1#1OH{+$P}q^O77tj{RV3d5-A&s0P zgn11g+}XPxRWwe?*O+9zFP~wFZIqsE;gx3k)r_)YQs>>c%|uB7Mfzf0oOs(qcMvIj zNjuv}!(m|{YcyH@H&2&H;nwWh)%Vzstm6J|V4_axuoh*lBAbYK(}4vEY1q#;mlPc5 z|MtWKW-2RJMwT%88p+FbX{xtnpqBSzp^z#XU_^p1d$Z}s1g8>WvR3X^eecA{p~zkq zQ*$C?K5tin5F2c#6cYqu>v59R7Jd{Yj%Xw7Vtjh*E%6PyQen;#p}K>{0qHzN1AmxS;- z3Gba|iIdRc%6Ngf0aJ$}=)XZu`EO41+nfkl`k*MR14|UDa-#=9KaKBuA(ZgLr3L&k zuU5xr@Imb(KCjpvL@X%wJ6tL#NXhwCw5_*aZwZ@V5}|$H{?fZ<7WQ|9Yk-pQXTC}u z%WiMr@X&yM>7ThDIIr9ddXClwvl9vbTD_n4Yg_J~vhZ&QU0J78kizcBXn}s#UvVM| zMZ65@AR-w;Dw>$&$Q4ky==vwQ#U7d8?N!_KS^yL4hXmFAM=lVtcn6Lm{ zWGCA+-(xt&bC8NhGNGRA)}d33)r~%| zn_)^ms->Q-yd}Mp4Qln}5(&NnDLaTPqZ`4mAK~F46$s`b7EeC|%-g&SA3Dm0BXtTb zQX4FMT&0<-yP?|v_?ff4ZcLGfryO~o*SUcXA(p_TvyrNwTormgiKP_KNlheasrYpJ zm;W#{6OOF`#h55rgm%jM?Xh5nB1fx~bSUDLL-{AGq)=o?$4|q7m{TF%H@r0Cq=EXZ zMIPYh2Yb!DP|bo1p1e$EgCKwM-ixs1=7)g`46ZU}QP7EtxicWrd1-xR%zf|g9Y>!RDgp;2wK2cE~e_d1} zR~M@G*7k)Nf>VCwTj~WQc(?`LpGL|ly>9Ulyem-!8Y~W^VwgqYAX$GnTUXRu;`*4q zNO9Qz#L&pIJ^!acI2Y-F&e_mM`PfcFZa5Mc6Iy?$%j6wn^)SinV^QdoC2}FA2Cb!96P; zCs+MAle3_Y7zQ{WdH3Q6!dFMH@K1>FcfhguZg|%4UTVRh=Vpv@Ho=ZZb28JIAFsm> z^psi6>yhTsC2u2V_O$nRZYU9m(Q(s7FB4BM_WRc-_Ih%%YY6Ks_zjNlBIVy9nkJdU zY5Vcq7iq&xx@SW%sekzDV4z5VkkOy*ee=n7=zt48in5pb8R4@K|gf zBnTsCg?a&t2B^JskM37r2ep{Q7nNXnD1vSVK=Lg;_~PNDvW2g5YJ4){JklCvmcP5X8N*{Qx=!9CQGG_!zs*RL zuW>SU#!w^#;Qpln@)){}^Vt;LLuF^9ep;>#4yWM>Lv%NrKQ}guIvjDuxpHhR0JvwE znbxspgxR_enokIfST`5h(66Ml{-xBui{q+$9a3cqs5OZ3eV=RplvpW;wO~y3KPfXc z2j;~}e+5|35fvo)cD@fs79ko^=F$6R5n67N0*Je%{agsHDYT1-KX$ybAvsgwT z2I9hwx3vm>d!N=n1a5$qRVju?1&38tCV_6KV9fG=ajdR5s1|I=ih8We9y>d2;ocgZ zP)q=QytO<3$CNxDqCuC)$?1EXJ_Lr;Uzb<*w-Hw9t*GmCVREDnJ)djtO@G{*w3U8W z9tdd3(OUoZ#y5%9`rx0VPX$$=iO=zx^v)J+w;JDytuJ z4X3a64}4nifc5R+1zK|8ML1e0+NB{CDTLTyGv?4bSY#w&-+XdK^LjeITC)d;Z%4s$ zo$J{#p1(jyieCtPB8TwwM)9-YsK2WqfrG=(EW%s^X3Jk!hq-_udXjmD)5YEGJwh22 zIv<{V?D~MI_7*bQVnDP}<;IXloV6rWhYv9GN7Rozz>#ALN4*bO2iDXd2B$yHc=g7` zPXcN&poTR+2hX(~nk7)TvO}*fz2D{AXc>(SkXD{*1X$7#X8gz(x;0X zA>(@&haclUQL2X*gA%Qx%PQGZGleO@0l6?N6Gi2T!Fx^+;N5LPB47MPm`)aNhB8~? z%2r=@U{mX3d*B`3E9H-17MME?j_v$xZsxfRMLU?Mrt4T78IoV{++NwV-{pRjr`yVG|%gY?*0^LHAOEw0k zTZ1$;2Krvpu?hOibbGt76A#cQEr)CpNu7EEd2($cmMB3Z?n_6cb+o-QkZc~^naH?G zjQ`KgI-|m1i&{o1sTG%5jRJ)tfbyTc>zmY_`FMEowT6)z z+Tg{wHD~L`qfv0$z#c`wK`!%K_qRmLmXK{+{&yLc=A0`DOA_Fs(G_u!)*ax|mi>d? zCR29gz3M>u>xw}f@N^N9G3=t@NcE}`(xDDKhT&5>CqjTctv^11HIWsUVv#*EZtMie z8U6~9PkFDh2YzU(bOV??2V{L6SXQb{u}RdN2n51!N4tAMV%#BXly~z3(_II6*-7B$ zD?k+QA2_bR*-gwN6+RkZQ)J zyW=(fL&XSeuSY)2Tn~)DF6dF>;HM4r_n8A9 zvWf)v!uRa>28xvmTs&Vw-xV=y1PEVDwdQtQXfLKP24A3@to(!3kY=7}RYn1MIRGF3 zu%2Q9*l9zgm~iN(M&gi1YP*srHFL))@RY>cThZlGAuqU^ClYs)nYIdm%EVFf$}FK) zqrh@J6*gSl>L6&N!HN?n+AGCysO z5Ib(}!dLGz`BarlWxOcVeREmet^L4 zL+l%6PcbS91jO%G-0?DLzZJt3e7#l96unq{9`4y-5Rik$g=KXnGZ~9jIlwAH2mFM6 z%}8Ihg&FM%=^unUvC}a+0|u(QFWyVD%;_@ci#Boc%eHNln|8b>f-{G_nEvH*T?wy?3aNNS_{GJmcQDmxhU~z z6d)PEIuqO67ZQ;PamdJ(=dNB%k){qR=%sLp?a-LocNmaehtU6frM!V9Di6Oo{c!ME zd|I=oR#W^P^)$mCn-_u~>+DGk6u>EuO^;ozDDTErb?LTE4A_gs$ty*6Fo^&^R+oZTFf*{Xscd)-{(bEw3@QS+pjwvwo< zd~frtnkV|pxND8aJY>^14vZ4izbu%iq=R}5 z2anRGicd-UAN4inqhEd(svM%ChxM%h2s6>S0;UXG=L&cOegjZQWt2r}oS4Gp-*Xi7 zlovY_9uJnZJu2|#DCl|&;F|#6fYn4c5lA^dP=n=~%43O~TUYfv|9;HPZr&##=rr;aTpgRxPd(R;7=GLn>$o<~E zp@M{vFcA}vl$_DrQl0)$o;Kl}!SE3Kzc3gjoMtF;vQaVOP~1FPNcRKitFU6i#Lz*m zEZ_7%?5_EUb=$Ud7I64%o|Hsq{W% zGsljNjWlX_WWGoG=;UB)bA4lX|6p@}1H3t=xcuk*FShZ{vjMd6k1*S3Vc38?^wX!? z9gdQvG_V!^I*ke+lmG~84J7aWStrjUz0b5P3>o51HDRDyl#@SJ*a&A(cW;z!UCJ#O zu^tR{FjfvzSp79glyU)j0f}PD2>7)pA&uh6dW{l4yCGa;MD9Z6LqB{(L=1fJVB=~r zfF8XX_!_0DKZPU?St57<4A?Fuym@on4;Bv##WnMYDE5>g%u8r((ASf4_N(YyqJiE2 zjGXnRwCh;89LdVW0u2hH=+2Iu({kx%2>R8@^1Cg^^lZg8)bAMCNl(elGeaIaC3=V= zM42e$1|xN`yquDV=hr#yhS8B=q1pT-h9eoSQNd&XcsIm1-&3ozVh7tH2<)y#^}Yq( zqa}u#&|4lyw>5*<;9mZl5=>DG2xwCpC|LG?hwDOkmvTvy_nZHW^Yr-loAuum|4Nn! zD@1o_S|1I5!tlt7fu;37rxOKCpS6r|ytosr8-9M}qeYxT<@{b78|n-dT+7IILkuocwVTI*VBDj^p?-CO+$PDt!l+ZzRX%G zFl$o?Q?$`_aZzMHTuhZ*AY z&j;;ck`<1ZcY=*kdh4O#Ch>*B?vsqbBmMQQ{_zRd;ZPD;zF(5>m7JPpb-*pV#Ts51 z?kbb|-i5PbIgho2qzL9?)3T;w6hlEbygTwi8YG^iT}!9jGLQF`P4Jz=NLiTNSFwZ0 znuORXzQ-)tuM)A_Ry|9C*wOk z{ZKUgE14$H;dZIAy6-ZN!|b%I6D(R}#yB}R4`GM(w)8UR;?a&Jq!%&+G9-t0cooa* zM01hNAqCE;(_p9PA*lSZmYHv^c}!P)qwwy~`GlnP>j>WA<*(#J@pqrEbtDiQdBU0{ z;i-CHFTSJ8g(4jh?l9tYnV4%csp;rU+h>=s%OSon4m zcI5qnczb-5OfhRT|6T$##0<=sxfiCv>_6A`tIyAmzgJ4&*vQ1TeVMw{EO38A{#D}-N zs-cJ?SubXzuy7fKf0ni9c@*#qhg*Y&#;^Xn|9e2Mo-rOYf4luduoYvtobcqkv_kfJ zFXKsw6M??Wsv%YJI5mI5WPqV;grThUk`}x2E!S^au3>Jzen$3j#y3iMSmY=duDc&s z$<7W`1})kvt4tK+G1;i$d?$J}@Yrtwcev6l7)Pax4ujX4=yS5(h$JHuPff;wzh z15Jd#K%e6O3Isx)*8^D25{UmXKs-sBgGyr8@7_`{4X?)Tkni_Z@9%z;h^5Z2VacyK zxe^AH&>LtIEU2n}5zUHnN&f`xit^z0gwGXG%~K(V%Qqm%dWY8JDeqKU^|8$2CnG1W zi{Eqb)4;iQU24DP&D`5$UcldqHJi}_Ixx%EnXLN7g4=iQS(sVE$yeORw@1*G2t@k`cMWjvjkoR%?p{*Bp0RTm);CWL z=^h-jT%JWYNmGwv#}row%|~mcka81*6Q;diHW}Z0!RV7FN{6UcrCAE4#j~8VTzgik zeDKQATt8=v##RenPo>S2MIr?@w^rX}K0@cUmw@=r9PdA<@It+>1u^7aU0hZHnC1*m zAY4&gT>ZNYZ459h!3b{Iy#2RCxZAZ>5*t}!lP2Sw1pP-OZE<-3_rJ*koW1wqO-(Ea z!0%@7zfD*-J~BC1cbc$kPw@p#SOezX*)x0I$n=U;RR8Y37_d2PG7zT8R@f!5F#2RX z!!zNm|4YZY~gB=oSbaYeq=)4x`jmX(*Y*=8HzLzCe)wNHLX?JZ=ri7 zu4*r8)rj+yHvs_T4p65a4}-slN3U>9uzk8cC?()#@8)oTcOvP82{48`&}MYtj=)d0 zo!Ylq<%cf=t>}+W4H;)7% zyRI(Mb*VYhEYy zCG(}O_mEU7jWcq6-yyHqhy9NP(&i#DT@wfs+*vdqXL0&spc!mjhCjU(PyfQY{uML3 zN1}2;`lZj!x(N@K*~{gYegKlqtI~B*j$kHj{+kE%mqaP87;y-M-p9;v9KbTjP!0^n5oZf$>G=@kPLg?FBMdX2ST#k#z6^qU{yQi2({_UyQ$? zbIXVb=mKX50P8FV?qsj``}h`C3%ci=gvQERlZfROmwsrg%|5w6>_IuUe;A*}`)RX4 zOMUod_J$6HWVF1;n)6|!;7rI;komlR(CqAMtS{l3KFA(k?*>gGT@;K3&v zK2J_CwfU79hjV?v;u7j-EI)-*qmx+H=8EHALa83=I~UXGio?a8%*5)~ zD4RQ74Ww(sAh@Kdo2}BP_rr={4`+DxWz;} zVSJ2wFQblUnK>EyWyQ+n$*bQ=nAR4dG@d=;BctmvaV9ZaOTzAjqFj>*zqPf9`W__Z z2e|yj^#|EfnFLiGubWTnCr%#7F0U5X{YPKQZJ%hcP+FIAMzIw*=j${oMJK_ygC3~B zcf+T3D->hGt|CEX*Dj5aXI|LB0|e*V^E@U0`tKBehzfyxJitxIbRyB+ zC9v-T_yLUB%ZmgDKD@8-%s#;4jtl*EZ7W7qQRRo90xq4^@6!8I>O)A0brZblqp|)mX5|W!%~f|CtKiO=SXT1yfc!Z5_yougiZ)Vkbhe!UgfRN!zKy83 z<}Q>^-ZtqCKp;8_9%>F~y;q3f0TEDGWb3Q6EIgns0v#MvW0Q(I3@+FxaIm5UJr*+u z5e%hm1yvOKdKtj*QmE^x6`N5gjZ-w}&i$avC)Go3W`*fL?7twPDNC5VQF+pG&vQCJ7tOoELz)CS{z-%u#+d z^E*ToK|#UJ%AYF5?j#2-12DM? zM(mUi4trX0pJdNmuP-)!L)m^pN@C={1?G%0_ZPN$GCA^R8O5ymF(Q~ zxwG-JMT#czqzy{;M^zf+MO=^lqNMi_?r<6_&}IJytub(BYr65qOY zsh5rZ*h&;(S0|KrQ$TS;JAZttts$L&GSQ=Y=Y02nwE(2}C->clmQJK6_k**|C|fdv z0dImZ9o-xVlX0YX2Ai{UbF>>)fkT?Amc>j8+oXI@YvBAa!EhvMik-7?q~95t z7y15t@SSVa89ru^4dv3vkS?E-+*p#ar(S=YU)9s^`BcX|iMBuuDsOL8JPnRq17r8vo;~nnw+~4GHqO%*d2Of^fKyBB zC2<9*fMOcT``^(mXJTd{3S)n*Sr`?c#&h~XKceQ*)E|wc`Q4062#?keH#zM}2V%!zv@llmZY*K#)^9Tg>GCIA|!RnS+4 z$4HbipfgX&N6tPzv_m8~o?`6^G9l?BZjJfq4_jle=QleB=K%pLhqgzB<-=z8(0gtE z_D4bmORf1--&h2VAE4MT_JUIg2`{fukfNdHrD@s02s{h%hmO|sK)o+(m}tJ@l~C$NwHas z#(8D2xH0;DWrC{Q#9p(nFS}dl)(zNTKerjg6#bLa?Iz>>SEyx}m9k9OPiI$@KuYjq z);Rp>{4)L3tjrOiYF}WAb3@MS;-u9h>*u&MyujKP*rB1AklR;7{yD6>!hmAxTJr}K z8wwfG;F>?zJ^c!CU`5Zj@e#7#8$QhcN4&Ru5dp^ z{b8ch!+Exh2QN=gZ@V9ow!WSNkJScj= zqV(rxD7&?Z?*=Td^(xYgWhu3|#>e0iCB^XxDx-D4QNAW~9qoPudau`H@jp64)+Z$| z47}$;E)?>XUR{4!7QNewL<{4G(z8Xv%9%l7x9!J0pefp1jTK`eUKEax$+GSHO8e{! z3tMR*5sJpD!|r7Q$cXU1?)Y0}cp*OakcZ39uKIVb_a65>lM@;x8XwJ>S;Vv=9&I-| zbSu>u)fh^8;54$|R}g)D22f}*3d5ZHo11xV6%oW^38S_|&F3FY;es+3(@FRdiM*ro zLHapr#teAGary&S_&)xktwTFM>H+E1MIa9PlH(GH;aKvjx@ymdN3Lf{>+}UkkR>#- zEAj9Ra-ruNjVil~E0abVv?8ZI;b4mKC^PaSHkd8>&jAwwXy1~h$AA?!pAAus#&@dT zNG?PFQhk?22XuH1?U%S0>AYvD+V@Q`Ce1^R1D;}8)h$@I27%x4z`dN7u}PE3pCr-_ zHw%gms|H~rF)4W%(mzs=9B;D2x5GfTiv#RoE)9#e-gqD7eUd2f2-XhW;^41`}@T$Z0Y?~r? zsuU4+`#~-O{dAff(Vyex4D@$g^=}D{@4H}33IzvzN$hfG_IG_6?*YBG`1}`ibcSTP z8`8g9%XJfe8=AF`1y*TK{kgv!U=~)3V{l%*#v-Sj-z;^T#r*N8>6%fy`5P%rv2DP5 z-kJ0BB-$`-(_2|cKd~2*;g<_${TesVpW?e@wgXZ8_=?FWTBweBh_yvOZ<2kZI3N536f>`$xklDL&|Gf>{;qq0pH0 zZT2GKK_Ey%G%T^Lz{59Eg-PWzQkBtuey`iTu)4=r;MFh{BD%aN z9Hp19EHfQiDVRP7QnUIae%~K1!)A#$dK%y28HB5%&1^uI*sgW;vCdY#3c?gsLn$k* z!^3|=^3~K}ypGJxB)YvpVY=q=0_|+}n%WIDj{dQ5$rfbmE(wwKp=XqCua;Oyzj_We z5^Yl@MD#PAMC;7Z7g;rEmXSMAtCH*w*jZT9cw9{Pb&E4u?Y5u}1geyxN}T`DkNnZT z!Y2AC;HS+Q_b`xIUYC0BacbK9?YFWz_f3n!%xp7Gi=dSRq|N z!1MI53I?;Rc&YCQ&Z`M5n*HRfJkFmxz8cSc6Bbv=iY|bBi5EVB=cszTsJldg_;Z0V zbXduiue5uTR$m13P1f4UGuVl)jXhZ3i~7N<=Mx=z^SPXD^P&L>(EVsWpKzX~Ap;Uv ztL~{mkaC08IIQ+d7+I|!YjTqebp&x(3GR%gLoE703!LwhRL8nb=;G-1&-zyCzqUZQ zFoMT8aAnCxvBK43n$40k#PM4GMbhvSUj6VQ;fw*{H^+HeqGZ+z%cJ{Du`)tTqhr^a zt<6t};t94`Rp(^7Qw~?NQqMN+>grIf+w7X{y6?pM6+@`>Hd2-qQkJq&BOq78d8=gD zslKytm4qWxc>b+BsfN-B`+X*WQdE95PkMeO@(bam5sR-pXQlUr&#^uDmJTLnTLG$mJa+PliT+7 zEd3nh8p6G|zNb0hm^4m#0`pPS=GG-JP`Ub~;iE(YD5S zJ)Z;zW#ei_NSXnG2eObqK3Jw`H`GO_F#Q@AVyZ6KncrTNS3x&%aeiH_+Mw6D%|Ykq zC;Xbbio5flqE8sXY@IFD&dkvp))(UbZ_x%rRUbcy4bM)UId8pUN)tmc8GbH0wsq90 zF9Tb-!ko6WG6$0PT*#$AmYj{+bwigt&XAzxNz&aPig&M={La4CJY6ZsV~S!sXwM_% zy8Z@0;(_@R1i-!z+4A!6EG+01(A@j>(pc9~eNSm=B^qZJPx7*NmnK>EaPQy)YfE6& z2e75q|bq ztf3(XaROThXBWGoyUXy$=i2ENX*Msew)U%`Tf@#{vY+O-y%B_;9iY@Ilsh7$iVkh) zLo_Bu)`xKhj^QpmVv0jn2J3vhizLi;cHMCfmO(m%YRFu^VXScjD9-wiG5`^#+a&Gr z_?3!9;Fd$;il^bsl6}Zz*vgAHTo{k z8Umj5iiJGQuD@MB*Pe%wf3Irr-2nq@tyMOxId;< z9y`8Fp*=K-0yeTwPcq%fcWcu{;n`)-Ho;sn%G!p>YT0o?d^aguzWJ0G^LF&g65(4# z;ko7U`e(=H8B|AUNpYj=FVk1u&cG&s#?=A7=; z1bBUNL`0U1^_!+NtL#^PhCedqE6T0knc-9us1G@4B5`$?{j5{+tZ)7LXO}ux(THzB zPrm&_to*WIqSmjSj|JB?+>}vU0SV3cZW_X}OQFlOeq!Z&xlXEI4zJiol?_z_`E=sPm5eak*FPx{Hu{6icxG*ef9a;Ythf@d zOrsgne6KeYj8sG*A@ZFJrB6EO^P*)cmG@g-4Lm-VgCD|E(drOn+ACBPO`U#&Pyug5 z#*`m9K5?X>=?A|4vKN)uiO%&2nJ^0?#^Y>RiRRBwsG zL(Ba6EA+h}?~%~$a}rmgoNq6l3`Txfb>NH*0k_{^2Yq)_HOW`w$LBhPcYXDO?n6uQ zEXgi(kJ;}ZPb%F?A45MtL$Miu8tnN{ypqZ-zA_j0+>7m{hr)25UG93%U)|MunF4#b`luW~vfNXsUmxwN57f!L zF_vEHyzHQuiqi->F++i zn(H_;d*#^LoY%7|-DWsJ(HL=EMD^~?%I>N#*=ZY#nVFxO$lr{|C#$njm<)~818Z6r zU^29^i0}4|TJlFBEYNIbO_;3GbJwLm1S8b0w%+2!&R1DK{u3JWx$b0@yfWQNP$>op zJ3&6WWreJ)zaNkN7aUx1w>F=K7Ncqw@nZ5TdW=d-E93E;gx`gPpf3I0B+~ZvZC;*& zou7fTpUXUveAa3@$Tn|jrJFi8gy{u@o6h&f1<4LW>taqa61jEe0mIA40~H*rk8@Y} zr(H^mu0MWUUrw6o;MWA zi`K;jDqo~`RtCQh7>%$LQv3O=HbmpHMpo+!9Cf@dCbV~e`b5v`t2H;-z1<4Op>T5N z>};j@gSE175$Yma}LmGoFsN4Ks_VJdO|pUm^>aPj@8xoBL7Q zIt>yoHy|B}%Q>BXHyr=x%g?6l+5pg@5hkkl+Pk5W(LAyxc5Eb#pX3;sur)l+j73`p zSPx5t-EI8f=U1jyPH+zHYfFpLML*YqSXYN1JXPpsU$MT>1^$fH<0ycN{qs-n0Ki?; zAkL~$h6P?d%uA4y=PAnZw%ctpI?*UGREZQHmM7#dR`pbadobA=r{de>fmTluZx?yo2|46WQFKStY(77 zfn5)RpvWg?f8FsyrV>pTqtIx3AS$Oys^09H`V1ezlfxCUKrNS2KYdP~f#B!fciM;_ zAYcf~IL&m%@f(=LKs}W%LdEz$ZGClAlwJ4sfFLCxjX?-VNC`;D07DB(i*!gxmvn;y z(k;@AlysMLmoyRr(j~&s9mDU8&l|qq`quI<*WBwqhjaF|uYK*fbMAzzrIBVS-ifkv zoEhEuG<0;7K0KL6RJQ5oiFf!LOc};; z7Lhmx#aWw}6tAX72RclEjjV7|j|XbCrY#E7rzSv?QER4EHNz)Q zKc!vX9>qT<{rv?bpUR^jj4>5oHFmA6ejJN#J`Gmxy)~D_@~ngu6nKYRqQd?2a9N=_ zX``ywQdAr)k|~@rG{h?hh#ZHS>*`z&{(A>nH_KzyjGi5e)Spyjhnm#B++c4*4~u?o z&d$;D`@>)bh142j_IcAWq;@DljsH1I!@!6OSG>6PCs1+paV-n(T}rs>yB+!GLM+Bs zw$Aog334T}2Xc^)66AY<>$?)EuWa$l@Aln}U#e5D9yMN3QS=xSjP_m|euz61 z1C;LBCG$%t{j640)7RUqWC=6caynTGwu8wrWj?E6vMi2W25e91Q>yu#0l@*0CFQHb`8K6~j{W{M7Yp*yfP&y|d*> z=B102Im+ zxjT{~eB5#-cxTJvMSxw3>wIMo>_cyy<@4Ijy$boZ{)t8J!iF}$Ql+O9)PbQI6!#?*1vm6`2 z!wysZ4}|G@nt{*-bbGg@&2^O+=7w)KeNyYnfGqQz^UMM%(MvG2FWZ7r4ar_-zh8bO z$6z>;qG>d=t;@x3joo_qJdq0AC>7J*Hn*4D$0aEuTmgH(?wD{dT0G@oZFMi^cdDGa zWVzAoVcm9x>+}qx=a|E%oHI_>pE8rm)c#IL#QVafX-n1P!w3F1nLfbJwgX;q3Ma&n z68&ChA;P=SID6h52-+WV!)Wv=XKV2Mr}=&zg9@}hcu5y{kQ{D zKAnO@_qsjv)*(uH(gh*1R@#l%e$?@COBPR03Q{6v5l%MqA#XxWYo~HX-ucy?V`91c z)Oc=_ybR>js}_OQ^mFl7;ZJNTyK(JD5dmGY2T>fzmnbOo*42It{;UEx?!L_@k5WZi z`q)A0&cb5JzjZc+#Ty2V))e1pOb~$XShXQJCs}1hQ4(5E%f+!{n>wa zOix+$`jt7icA=F?UbCOm3m`-aFSOS#?do&NjL zhVz1^1YV9ePeNhkN6Uw)rXo6J%IPb+T6aOv&^0aHHWR$}x#Dls5U#b9T@8a!)mC~p2xtXD*e{T|o3*%8R$=Dq@_>Hkr2*$Z+yy8DMR zSXqqN4_LeKn&zKvSn+i0ek<_Y$&vV|w-54Gpp3ifrI58{5m5-4(|twxj*RA+Nulc% z4e(IU-jr;?#0SwFXRjna8we|!(ra!l*42jGJ6o=x=+^K=*t#!x3sl{O5x&T4VU-oa zt+IZixGk{HR(4f+v64eGRNn1{INWr8T4H~sU~wV)bUWTlosTB-m>xvrH$W*6f@IK( z@^E5bg^lxB3a2@jr(MRf_H}u!2@w_1R}ddFB(qfD{fXp@^VX0G+4Ud|)nJc1UM?#L zn(#V;)f$CWyc6Zb+wnKT zBfxjWyDxOj#}^{X$~kAQvs{eN8p44D zYjQR*dY7D<2?{zghS=t%H*PijfnnACt8D9cTxz@vOXyiD_LmMT@P`qKU0I{k*tR^! z6(o)`?j@~J+4OIH~m&V@IeMrJ$;bUv&s09^6sD=15Lj&8eWvk&`#LKUZ7EI~Z!^0bAq z!G)(%G6uTgd589l#0Gg*jqt5%8&7^t#To#5sXx#18i!a$0=2aY!M8^ABEm?2i&j`3 z6^Ay{eErs=1QgUCZ<7Me`zK^g47%ZI-O4PhCh8 zIBZ$$nW`pH())KEM|uVB(Va+VzS8@^dLhri^6y%JZ>7b%W6W%qR#c;yBM_tG5 z>45W2CM*oV*mbVkHy6`CDt>)R2^7VDIIl;Mt()nQ*m>M{KB|Fp-~z%r+G)c^E=!!R zD%WEM=z%1@H*V`(rrNS?rT~(p|RLI|)V~ z=p^as6?}2qB=ml|zpiX?V9fV2H+ghUv&N(bF~l_KndrR+iL)WbPFK$%NJ}6d>PN7v z73Q`-43OzQ+BjYi-LZwGUQF(U5-%gP$Kx3W-!K(*Mf~yto+mqW>y>{53#Cz(idHCI zY2CX6GRLSX!_<2F?mE9oD{2F97T0Gcg#79+*wq?b2h!D>=8DWSjuAj@e6yWT1@aM| zn>(wk3hBk!b24t3Pe9-dzq)fKC|niXK5MGUOf&-;Z~FDB-}K?kDBhd8Tv2DKBB8jB z);3ulc?6s-xR|i*udiqNtQ+z=&$kr=8QJx09e$*|=Sn(REjA2cRYPgrHms~+rP4<1 zEG^G5*VdBPU|EAP{Oj_)Kbq~k7zpAV*UbRsi3ySdUq(It*+izOK*Ms|ZgqZhuHQuG zr8PUN__;~7gn1y@GJn%N|8>EvDohJx*4*^B-NA5&h)Jm*Am8-kl6R9pkG=x$hjAIQ z`ug{Zwz(18dA?6kKX+*W8#j7+ z2)_hbr9IoL>g@&Id{omPA;+b)aCixcV@h8h<Nm>}Wh7fh3)ldgHTzQH*9Kcplm}w>t1cma zx~NYHAlW>Y=Rs00e41V3t_}*UxhM9KpbTnOLY;=eiqAmKlyNr z*zxtM6{-m6Q>i(8_TYLS6!zXDhE@Am*~=|ZSz-t_?tw`qNIXoa!hEjz!ZSU4MT~dv zy@ZX62L}}lQ6*pFlX=s5T)UkOd!YP;k>_-^;Tt&mLCFN{y+^A4QNFarmxuOIgn8l+ za0|lo8b5&=s9qMAu)Qk_R}9zMZ2S$rFZxz0axGN&zqhVdu+F~11U_%J_?H$NG=U(Z|yIeGC*rno8t@O z>&N7O8=G8xf-9A zbAIRFS#Vw^j>S>$i|&fsC6pXYnVXr(R~R4L=06$)y&G`P#vb79o$%c@dO_#$H|gs3S{OjCaHnwp8qP(8AGV%} zzYZfgt{h(+N27K^^STjzFZm5CvoU?nEWQV=AXt1z8>H-IG~HOJ_uUgI9cZzD4(X!I zd!?b=cV(!~O*jc)&uuMOnJzsFp^>|I!jvs4+MjT!*sA;JO`gWQsS-o@ig~8-Iql^oKaLMjvNGgIuh4{amQbEmVLp3{0Ms{Ecbyx zPN42;89>)R2U5ocMyf~VZQQo+N?=RQ zlM>X4Po98L8DGPn75mg*35`!L{!?g_ap(rBL?ZN9zK}1$08n3rZO^=MoaaF3seS(p zjn^IADnhdpvMO6}$5c7^Eas)^+ENdI@!llTKrmuc0NnaTKa$9+s;zkZz<8gED&@Y# zZ$*^!am4)j(IsGU$CKy zDUAd%Ds~|E1WUE8!|y|Rt$V)hR9`nNMg^qH2OayeldEcnkKz0K(AsCK`4jz&^re+P zj-Z}`P8(P2u;ezy=qKu@vz5H$=c}qr=-*ahN=&YZuYdBC(eCxhE+{=kkZ(6=SE*ba z%=J-0RY5(3b`3o?Xm|tTen9(U7vYv*z9I$pJ1~vn{$S9?L*(u`D~u5+ELJBSzX`b<<)xe&tLHjs*qExr^H zbztwW!EpaJjUcVa$GzzIBACJJ;!Nr#x~wSpoNA^-K)6J{|ZPA?=!*EzWAJHcI;$v|dWSlS`8(a&Q5EXn4S#u~wib z0QHYrg!%1J-3|D4X=Ywxec+qNT{78~7WZ)U_1nJBh>-1~vA=rGUZ1_$Ys5bWYUlVW z#n61^DHo;jiwhQ!8R(?nBI(lIRt3MUxyRwc2>rKx*@Jt*R z#xR`H0J#LqcIjK+p0D)Bdf|vlU3O@(tb1$cDTo(+haHcsHSD`r-!P}yOh=ZV;MP+G zK|Z$_w~fbrEyQp@;u%Ex_vmiUUx3)f;DNVQx1md_;hS}W##qB+xQHxTAP)|=#?<3&UpAjNBU_@gLnw6&rvb+idwKVcBL3C0LW^Q3p8od#=$z69H zSND$s=imAw7Vc$OS^E8B&+jl$wGl)cbSGAYF${5nm=@MAnlm>(yu@q=8OKS3@Q_`6 zS|RA5IT!VmJKZ|sn##de%1;%`^q zFc8ZbRM3(Nz$(15NA^0<&tDmP*?>XGcNW$db<`wXd$3`1j;+qV1_zUJa=~z+C+RMe zufKFPfTCJpRx=7~8k7S}uB4A%nU;TB^KQyi==5{(9CiZ*aC+}}@q;!41C-^A7kuW^ zo(jet3@mSbXi0&MA|9KBzGGHyH0?f$`zjDjB+kxQ(Q2kec=F}};Hqj$lU@=|w*#ccAeDS_+^)H-R8&+h_3=u3K;*^w zZdKW1KU!#Q&HJT%7nr8c;g}QZPA~rcfR2uhVs?>3$ z-~X#!^^HZ)B{glo@FT9XZzBHH50@A?8pb>0Idpv(18F%GE(B6a_@{0{6+h^}Lr(m? z=bW3}@Xu-ZV+L}j}f_jTP~PmaFr$nURuxq-KF|DgQ)Z_E&1g_+<+ewVHH^wof3J^syN z8f6JOu0;w_S9e;B=35Y7f}2M2^Z?YnjSPY{4#zSH+0KWa@T&{x%iS zj?lqkNI34pb$(+abimek_X1vaLmMRb+l}I5hh(+;!9VSfPx(1sR-}^fu1%&_TnNj#^Rl0l2HFh`8!RgRpxVgS%Rda*ZLkO)YNaB*3m9gTx@FP7!xlrh{Tl8_F}Zkh}pl=4Ufx2`=ST$e_WDi z^fi-;!6|rcB5EgvRwI(JkVILHVT@D9%gP~dS@~K@iInU%CWC__V>^M^v4-Oa zKdSdB&%xEDyh)R&$y#zl^MQwYp@xu+}P zH2iD5`60^jx7Mf_5b3E|l6@Y57AZ$?8sSc8(EaDR#X(6$l8NK|?HCX)ujZ&GdRnCU zVkl?%6vfb2uWwEbe#Y39v8utHB+2)jOXf<2f3SGY$CHkkG2A5Se2fdhe(zNiH7DWU ztn2BmH|W)Tz8<*E{<7fh+UNPtsaa|sk1I{uBjoXInTRun?1-wg%6|lrQ#?oW<(Z(O zqoxRzbj6B(AY0i`co_V!qF*{}?}(=|_MP3YUH_8B zIw8ZDFt3O%vImR1IdyBCa3JMr6{&jrODu%3Xh8c2#b(lEQz_3F`z8AmGF-#*VLD+x z@RS8to1kC+Cf(bSNv@T(+;w#Y?^FJl2M2c3Tvfvg0(NfGlU6^Jo2?bOSuSBsjL*u+ zV}%M^uzWwh7M|@#&=D>Ayw0q&+W*1yslU!HD%j;yp|5k>z%#h#8<#OJy9MkW+Wp*W zUvOsGYg8BzZmiJGprQ8nRABM-_J>M2jr(<$9LrP;p`TNCJ1A$y8+P>5EKaKjhM=MM zWi#CAd6R>lS{jaL?4w(A?66H?BP2=ZtItx0 z_-tm+IKVp16gbMJ%{V?NLl)Rd?Kt1oYn1HbJ;F(RlHQ@L%jFmp=MuFQ;7s?)<;2^> zWy0sU6K77$SXoO$hFvYA1=kZ2MH0zX5{T*NAA}6%G1Pc#{i<^S)*RvzWfka5mtq{l z%U31RRM$%LYb8~RATD=AGMq6*@TM=%3r5X)_?Z_2%X!lloh~wy@aJB^Q<6B1BL+w% ziI|h4bIJT^7hcKbgS#YNXb|PRhoJ$aucLV&msI4x4Y&FBp2>a0?cCZ}E}(hDf7h|0 zqUB^*!Qc7Nb*B7P3Bu-S3p7Y5DPFONFQfGX9fX$QXY%1!Sw;Sx`};PRQ)bVcR&!r) zu25kh38rQ5nz`*n&1#->j@Y_kMN64SrzQ1E1{;w2vUL*UtR2Ke_@3qj1mc%X2nih= zvrO(0pqu(S$50#Yb*z1uRVsghe0BM6(~1AbbgF$_2q2W$g;2?#Hstbt0f#&`oL-kB zn&c$XtNtIHW4uL>TbA_|+nhdE@Bi0wSV+RTBSQn~T-T%2?K?XOJXWjJ_1mD>JrYn^ z^#PA#_3??+%ZWY|B*;dKach^N)6jlrh+$ixM}wcj={waLz4lUhaz3dP!emIyn9K|L z@6T#XUiR-eJD&t0XH+wkRALj!H_Gl{(vm#>x80~yudL+m6s0t{wyIi-D3E?3sf?|h zT(c?hT004sFEZcN&+CmY>|`Kh-9;Ov+}tpsroh3wmLPf%%lNUdu-2pJHO~&M-Ndj0 zcLy>ua*E2yN7(fv*q5rdC^$2f1Aqvoft`jO>jtd^b7CvHT<*D<`Ag@P&-Mw>*Rc@{ z4xTmWK4(endOlGunk?PKXW!Ni$?r3}t2brv!QQ+b^_ySidX zeB^iPX<3u=-}mB;tc|{Fdw?7A%)ueJDq(E}tORncD1gFay~TJ@Vs7uB3DdtrqUmpf z)nDB}FvMPMTq#-H7L5|1L5@QY_(8vvS(_y%~N+tP$VPwC2boGTv za+u(pChfyvh4P;05{1da!fQCprypfCa7A`tHOCCTXl-;vYj2~sZv&Wk-W_4Ds;(zu z53nst+>A*x$8E^Fz5e&j^A+z}>tbdXP2Q`%>F~^M=e+h6G->b$P<_{|!q&@iBLBpk7 z@bToQlLHEo+0|rBIl+U_zY*ChDwb8Vkbx5p@L;5DPH)NFs4+val|-CTp84%GD`(v> zux&fAM$_TCol<~X8|zHK)k?{}i_j`m4dC+j5;B8{!SQ2S@j zg;dOr_s;115nhP%_*W%YCp0i%2Gj!s4?h_ug&GLU}*YCMs#hG_20PLzVw_!pHlNbcfcSIlYd~qKp_*Z9#%BxI1yE?>%A(PTq7%m+Z9{ zHj|^%4aE+^LtqSwv!(s`S$dIoGy|=7cQuWsmqqQ4KK*M9eqscQ&afkcWdCL}T)hOa zo8UpM&-90f2T(rVhE$m#q?(MXMX%ul%zy?5NER-h6IW!YWG3+5Q4CsoYUdp>nkMvm zk+g*1xe+F~m$km;H4+PcKtLC{wodYbYuwBg3+(!69&>a2fhrA!UD`fG%{DPM9~DD-1o6Hc`gCF-w>hNggZ4CvhafW2(TO{bTEv z=?(BIb%Fa{WyNj?JgCI1!JMYCQo#EJHr0~uJR=$HFsDi$czlNxYz3a2nWq2rY;j(0 zV5n~~6?2qu8s{*Q&&315(`;*HA@8@t3`}QQrsl_b9uX}tF1W|dD`-_e83XHKJAlo3@Wx!m>@3HoC@xch?-cD{{Bq#l3U zEUpc6xh-Q0PHu?ONZX~l*wsC>o9P_n{63Q1VW_}l-4)Ye>%H_|I|*s-?D)*-y29Vw zA@2T*!i*`3Shz77pR>8vX1Q2K@=$kLGB1mfhyBTGa!ibNjnY^ET@TKKg8$28z>r0W zYf9;{$%Al_Q{AzxqA^ z0-XqM<0)V=N>$6_oRO((|8Y2lErH(M|Hb4$f-(*d*EPh;;$;A1$#>@z7$o5s43BuLrUC19A&{{JEJlcfJb0IY&QC>f`FOOOCiM*$+5RB9CKdw2 ze|OJRA6))p?^8?^0d4xEQKTAfKq}xdVurF94iMYK>AWp#*KSMYuS}biUTIMGDYypi4fpnuaHoNx zOB+*{$Y1=1*|?Zonr6||$;u1e{~<}vc&Q|L--ZW0uyX~~ygJk4pEk$yM@<_=~lI)NqxyoT* z{8P=~=;A?utcF~3vc|a|LuxA+Idlbd)qOAQ{er;txAr^=?<=b=+bC*m@H-S!h%ly- zw0Ce@_kGvi*4PhjSAagdOwZ|CBZ~r7=?F@I1}!juXLR#5#T_55) zg1ARz20Y(8|IKD*9RZsO0ahc=yhw#1dJ`-Y?n*aO+SplE%{9z%smA&|Z$u6i0SwCZ zGFYDQG)FQ>%{%Jk_Gt?=TeS+m9J3gEBXa{lLh-a;I`2K_tX^DCGG0yd2NUm1N&ij! z8G=8>$8qR$&lr#G4WbXLgP+ee2|3r9ytztqfq|P(JBP?fJvBR^!osa zDo4vQ?~ljDN8Shivt>#Q`c7`R!L)f+^Ljv*@ZT<`n)spGLe9faGLPZ$ju;&-gBHZv^m-;usZX zrk)8gL@!WDN&iJ<{D??oP>WU8NjnC68?&8>mBYObFH(E)$uOf6_wq?gokR!1M0tc_ z^yUBX7|0+vaO2N_$f!g0t`;)?pz)cOVU-H+2W3gJKlI-pMkU?zDxT0`nzb9bqB182 zIY$EzF?RhZUh|5Cjoan_2`~SI0Exlktx()cnqWX>G+LODLH`ObAAPfpVbEdqzxB=; zJrRTfy4R!kHu<(gBqd?Tvi}L6ce}B{#KDr#4yk5`_gdKv>&3|hcWeJqrxZssd zwlkN5ruS;LJ>yZ()f>mA785@NeRgaJg6CyAgOO))*eL4}K*Uk#nt^-r`8qvSwAyUe z<;Qm6#o+guDK*L{58N~!%lOaB`1E%ASrj}%ZgjD_VWG*8Rg(13fm>u{ z;bkcAH#Fb-SM;nslS6IPzhmTGa!Swm51Tngg_j8`@52DRYBK$pssP@GLhnrC3FEmc znsR>b)N?#1|JRfcrBH0fhCeh^Br)rM*$nL}FrF8nYOBiX)zyrT(4QDH_C--A1BFrK z75jaKx)~W;Lg4Scy{}fQ#^W+M?x1W30SaVR8hSOMal>o$bUpRS9YcL(8- z1kN~_azz|-TtjA1=tJWE^@j+wy_y74?W5yPm%$XRkYx26V2vqaf6W~{4kH4QYI&CCZwUg;)NKTEbXPeKO^7D{eF}-r-cHiB&d(n}V8Zx%bqayb6 zm2M6;%FK2-=)OFnP_$nKe;YdFM|}l6a1k zV%DDJR7_DFutd}KQydork9P9hbRSfPW@Y6$fUv$@MKQo+gscl|;z4x0+#UWFL}7eO z=wOMGfzIf594IQYHCWfKpSA*kZ=77IAUt=h!7odct;>^|{8osMmTO1p5>xzOq5#qY zJT-b_8mHxH2oo{>jCRV9%>kC68;T~Y+Ga_UM03CS_U=DHfK=Tj*7|()>ut`lM}^sF zzW^ijJs2ICYIMKa1d3rd2@W7ZAjYxE3=k9_^`Hz0s0*qO@05fi&ukuCg>;+T!v`TI zWc1cFjwnoEe|!V*8IN^EtUn>Neek%n!*>VDhr|kXx>-5NE(C7;I{ec>ayl=6(BKEj zdI;X;{T(>{fp3#dB8vdk$+H6j#ta{Z9M(?Ujs$EMbEXrMqgLkls# zg~0d>`^Rk5i)JRsh>_Sh|Ai~kA(40j0pmW$}_sFHXPcQz;JFweJ}Pk zLQHghnRwzlk~bdHDP4(q<1D2xC%IOaftb37Ntpj{bp~<=L{zUuyE z?DIdItx2Ch^D+6BF*Sv35OVS#g~oHMbt9neP^T0x>H|O_*S|%YjT`b2#_Wu4SGza^ zZH*lW!$#rtYo$ECza^R|UGUVYrQ6PMdEC)I8qL4$XZ`eOPvD?V^D#3}%oioBSw9Ve z=m>RqR)7f6`fCW4tsaqgPj`uWQ0%bTGiTo<0h+BN9|`3@tOgZB2h=qL9Q2X@a*utChz=Ik25uOFj%#GHQHGeElhwqYS7_-5Sa>XPZ5u>{7ybi(o+WumK^+A$gTvy zprw$mr4lPQ(^ZG?bel!~Tos_IfqZ}}-Bx|TA$5$*Zp1@+{%2P$CAQk9n=|(IgHD4K z5ETemqoeiqG1K)CtQz6YiLY1mhsWnTOvuJG|yEj|26@i*^) zoMRv`!03Z*sFllv*ZCPxwmY0QcEze*k@3&k0lfrbM-EPHRGYi^Zn9Q<$<)#jmYXS2 zXp_>#%tg*0GX9qD-U*s01pMg|Y5zqjkXM8wW+^V@NC5JM(5@MZp~t`QTusq@9Z+`v zwCTKSRb%GI;e_6tnCo4bjhwYpXAhAdAT+)X0MMh%wdSCeR&TBr>2qAM?wGX)POGt{ z@|cU`pqA4Fmcy+CG>(1uP@qSCZVYw#^iJt7_KbqFVM5fe{?5Q1s26UH}Iz!6NjSpNMpf-ZCoaHu6FU}#Ln|q zLPDv=<0e1p0J;vj1(YkG$N$Nd1dnSgq#f@K?i*Q=Uu6=?6)-o;#xR3DJr)IfD%S!k zTv_p1;yhw&8|PqfU*hT0-yWbmbkVw}!OXp)rG^J`fG?D< zZ9niE0G|O{c&QE zye&fhhyUw2kMv+CgOW z!GdY&(`24l*}fI2AE5cQRnpBix(XAxuEuomNmpaJ*yKW^H3BX`6z&KTD|*-GAak)N zx#UUx?7z1{*XPX*-&?@NKuj0^BR(wrY`W}%hZh&+Q+iEBA>}b4cYs<38Po!)#(b(0 xZ?`SS`DWuEw=DM7vJ)H^(X5-=BVdf*QRiE2SV=EdKia{{br#Ul#xX diff --git a/docs/reference/figures/logo.svg b/docs/reference/figures/logo.svg deleted file mode 100644 index 462fc18..0000000 --- a/docs/reference/figures/logo.svg +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - image/svg+xml - - RStudio_Hex 2016 v7 outlines - - - - - - - - - - - RStudio_Hex 2016 v7 outlines - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/reference/index.html b/docs/reference/index.html deleted file mode 100644 index 94e30d4..0000000 --- a/docs/reference/index.html +++ /dev/null @@ -1,118 +0,0 @@ - -Function reference • piggyback - - -

    -
    - - - -
    -
    - - - - - - - - - - - - - - - - - -
    -

    All functions

    -

    -
    -

    pb_delete()

    -

    Delete an asset attached to a release

    -

    pb_download()

    -

    Download data from an existing release

    -

    pb_download_url()

    -

    Get the download url of a given file

    -

    pb_list()

    -

    List all assets attached to a release

    -

    pb_new_release()

    -

    Create a new release on GitHub repo

    -

    pb_upload()

    -

    Upload data to an existing release

    -

    piggyback-package

    -

    piggyback: Managing Larger Data on a GitHub Repository

    - - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/manifest.json b/docs/reference/manifest.json deleted file mode 100644 index 1729967..0000000 --- a/docs/reference/manifest.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "data/data/iris.tsv.gz": "70e13d6b359633296f73b60f600dd3f7", - "data/data/mtcars.tsv.gz": "10bd19ad61e72b9ba14c6d4f0d26e651", - "data/iris.tsv.gz": "70e13d6b359633296f73b60f600dd3f7", - "data/mtcars.tsv.gz": "10bd19ad61e72b9ba14c6d4f0d26e651", - "mtcars.tsv.gz": "10bd19ad61e72b9ba14c6d4f0d26e651", - "tests/testthat/data/iris.tsv.gz": "70e13d6b359633296f73b60f600dd3f7", - "tests/testthat/data/mtcars.tsv.gz": "10bd19ad61e72b9ba14c6d4f0d26e651" -} diff --git a/docs/reference/mtcars.tsv.xz b/docs/reference/mtcars.tsv.xz deleted file mode 100644 index 43c151d3ccec553fdac3e93a788663d74389fb99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;B!?H+ooF0004LBHlIv03iVu0001VFXf})1popaT>v(m2@8zSR&tj~+m(MJ zj0GtXO5@+FOL`~er$3+6*-j=LajS2gy;=1X`_)D|;<6^UAdc1)#Arqg<5lnTw`4!-$(8x+ zA%X7woQ8zLojWjB0bSb$0iDeyxt^>}5uWOQ-KScNQLjI&+?hv=Yrm~Ainv;lt4RQ| z1g81!JfZ0q1^~q3$g4Ct(SK5kZp3Luxh5t7$P=K4{ItvQ+**mCEL4nqq+F}sQ2 z4}_qbDqaCXuq*N$x~rm^)B-oNAn0W#D5Hi_cdaxuW#jB8!zRzyxVw?89`0~XbcF;=h`@u>4skUAk<(+u{8(OQ^3u}PZ zmnrr`dnsM;Nf9}H{6%H`OC%KvQ qmF1Cyyu}s(00024Jx$F30ks5y3IG68q@W}|Fb#_W000000a;pHyCsbP diff --git a/docs/reference/pb_delete.html b/docs/reference/pb_delete.html deleted file mode 100644 index 53e1694..0000000 --- a/docs/reference/pb_delete.html +++ /dev/null @@ -1,135 +0,0 @@ - -Delete an asset attached to a release — pb_delete • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    Delete an asset attached to a release

    -
    - -
    -
    pb_delete(
    -  file = NULL,
    -  repo = guess_repo(),
    -  tag = "latest",
    -  .token = get_token()
    -)
    -
    - -
    -

    Arguments

    -
    file
    -

    file(s) to be deleted from the release. If NULL (default -when argument is omitted), function will delete all attachments to the release. -delete

    -
    repo
    -

    Repository name in format "owner/repo". Will guess the current -repo if not specified.

    -
    tag
    -

    tag for the GitHub release to which this data should be attached.

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    -
    -

    Value

    -

    TRUE (invisibly) if a file is found and deleted. -Otherwise, returns NULL (invisibly) if no file matching the name was found.

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -readr::write_tsv(mtcars, "mtcars.tsv.gz")
    -## Upload
    -pb_upload("mtcars.tsv.gz",
    -          repo = "cboettig/piggyback-tests",
    -           overwrite = TRUE)
    -pb_delete("mtcars.tsv.gz",
    -          repo = "cboettig/piggyback-tests",
    -          tag = "v0.0.1")
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pb_download.html b/docs/reference/pb_download.html deleted file mode 100644 index f3865df..0000000 --- a/docs/reference/pb_download.html +++ /dev/null @@ -1,151 +0,0 @@ - -Download data from an existing release — pb_download • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    Download data from an existing release

    -
    - -
    -
    pb_download(
    -  file = NULL,
    -  dest = ".",
    -  repo = guess_repo(),
    -  tag = "latest",
    -  overwrite = TRUE,
    -  ignore = "manifest.json",
    -  use_timestamps = TRUE,
    -  show_progress = TRUE,
    -  .token = get_token()
    -)
    -
    - -
    -

    Arguments

    -
    file
    -

    name or vector of names of files to be downloaded. If NULL, -all assets attached to the release will be downloaded.

    -
    dest
    -

    name of vector of names of where file should be downloaded. -Can be a directory or a list of filenames the same length as file -vector. Any directories in the path provided must already exist.

    -
    repo
    -

    Repository name in format "owner/repo". Will guess the current -repo if not specified.

    -
    tag
    -

    tag for the GitHub release to which this data should be attached.

    -
    overwrite
    -

    Should any local files of the same name be overwritten? -default TRUE.

    -
    ignore
    -

    a list of files to ignore (if downloading "all" because -file=NULL).

    -
    use_timestamps
    -

    DEPRECATED.

    -
    show_progress
    -

    logical, show a progress bar be shown for uploading? -Defaults to TRUE.

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    - ## Download a specific file.
    - ## (dest can be omitted when run inside and R project)
    - piggyback::pb_download("iris.tsv.gz",
    -                        repo = "cboettig/piggyback-tests",
    -                        dest = tempdir())
    -}
    -if (FALSE) {
    - ## Download all files
    - piggyback::pb_download(repo = "cboettig/piggyback-tests",
    -                        dest = tempdir())
    -
    -}
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pb_download_url.html b/docs/reference/pb_download_url.html deleted file mode 100644 index 756c4ee..0000000 --- a/docs/reference/pb_download_url.html +++ /dev/null @@ -1,133 +0,0 @@ - -Get the download url of a given file — pb_download_url • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    Returns the URL download for a public file. This can be useful when writing -scripts that may want to download the file directly without introducing any -dependency on piggyback or authentication steps.

    -
    - -
    -
    pb_download_url(
    -  file = NULL,
    -  repo = guess_repo(),
    -  tag = "latest",
    -  .token = get_token()
    -)
    -
    - -
    -

    Arguments

    -
    file
    -

    name or vector of names of files to be downloaded. If NULL, -all assets attached to the release will be downloaded.

    -
    repo
    -

    Repository name in format "owner/repo". Will guess the current -repo if not specified.

    -
    tag
    -

    tag for the GitHub release to which this data should be attached.

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    -
    -

    Value

    -

    the URL to download a file

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -
    -pb_download_url("iris.tsv.xz",
    -                repo = "cboettig/piggyback-tests",
    -                tag = "v0.0.1")
    -
    -}
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pb_list.html b/docs/reference/pb_list.html deleted file mode 100644 index 27d8ef4..0000000 --- a/docs/reference/pb_list.html +++ /dev/null @@ -1,133 +0,0 @@ - -List all assets attached to a release — pb_list • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    List all assets attached to a release

    -
    - -
    -
    pb_list(
    -  repo = guess_repo(),
    -  tag = NULL,
    -  ignore = "manifest.json",
    -  .token = get_token()
    -)
    -
    - -
    -

    Arguments

    -
    repo
    -

    Repository name in format "owner/repo". Will guess the current -repo if not specified.

    -
    tag
    -

    which release tag do we want information for? If NULL (default), -will return a table for all available release tags.

    -
    ignore
    -

    a list of files to ignore (if downloading "all" because -file=NULL).

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    -
    -

    Value

    -

    a data.frame of release asset names, (normalized to local paths), release tag, -timestamp, owner, and repo.

    -
    -
    -

    Details

    -

    To preserve path information, local path delimiters are converted to .2f -when files are uploaded as assets. Listing will display the local filename, -with asset names converting the .2f escape code back to the system delimiter.

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -pb_list("cboettig/piggyback-tests")
    -}
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pb_new_release.html b/docs/reference/pb_new_release.html deleted file mode 100644 index 5b0a8df..0000000 --- a/docs/reference/pb_new_release.html +++ /dev/null @@ -1,139 +0,0 @@ - -Create a new release on GitHub repo — pb_new_release • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    Create a new release on GitHub repo

    -
    - -
    -
    pb_new_release(
    -  repo = guess_repo(),
    -  tag,
    -  commit = NULL,
    -  name = tag,
    -  body = "Data release",
    -  draft = FALSE,
    -  prerelease = FALSE,
    -  .token = get_token()
    -)
    -
    - -
    -

    Arguments

    -
    repo
    -

    Repository name in format "owner/repo". Will guess -the current repo if not specified.

    -
    tag
    -

    tag to create for this release

    -
    commit
    -

    Specifies the commit-ish value that -determines where the Git tag is created from. -Can be any branch or commit SHA. Unused if the -git tag already exists. Default: the repository's -default branch (usually master).

    -
    name
    -

    The name of the release. Defaults to tag.

    -
    body
    -

    Text describing the contents of the tag. -default text is "Data release".

    -
    draft
    -

    default FALSE. Set to TRUE to create -a draft (unpublished) release.

    -
    prerelease
    -

    default FALSE. Set to TRUE to -identify the release as a pre-release.

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -pb_new_release("cboettig/piggyback-tests", "v0.0.5")
    -}
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pb_pull.html b/docs/reference/pb_pull.html deleted file mode 100644 index b1b0b9d..0000000 --- a/docs/reference/pb_pull.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - -Pull data from GitHub — pb_pull • piggyback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - -
    - -

    Download any tracked datasets piggybacking on GitHub. Files identical on -local and remote versions will not be transferred. Otherwise, assumes -GitHub version should overwrite local versions.

    - -
    - -
    pb_pull(repo = guess_repo(), tag = "latest", overwrite = TRUE,
    -  manifest = ".manifest.json")
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    repo

    Name of the repo on GitHub (owner/repo, i.e. -cboettig/piggyback). By default will guess the current repository's -GitHub origin.

    tag

    name of release/tag on GitHub to which data assets will be -attached. Default is to use the latest available release.

    overwrite

    should existing files be overwritten when hashes do -not match? default TRUE.

    manifest

    name of the local manifest file. Note: A leading dot -(i.e. indicating a hidden file) in the manifest name will be removed -from the name used on the GitHub asset list.

    - -

    Details

    - -

    Will only download tracked files, as identified by the manifest -attached to the requested release on GitHub. Add files to tracking with -pb_track first and push to GitHub with pb_push.

    - - -

    Examples

    -
    # NOT RUN {
    -pb_pull()
    -# }
    -
    - -
    - -
    - - -
    -

    Site built with pkgdown.

    -
    - -
    -
    - - - - - - diff --git a/docs/reference/pb_push.html b/docs/reference/pb_push.html deleted file mode 100644 index 1fbd3cb..0000000 --- a/docs/reference/pb_push.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - -Push data to GitHub — pb_push • piggyback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - -
    - -

    Push all currently tracked data files to GitHub. Only files identical -to those already on GitHub (by md5sum hash) will not be transferred. -Otherwise, assumes local version should overwrite existing GitHub -version. Create a new release if you do not want to overwrite previous -GitHub versions when pushing.

    - -
    - -
    pb_push(repo = guess_repo(), tag = "latest", overwrite = TRUE,
    -  manifest = ".manifest.json")
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    repo

    Name of the repo on GitHub (owner/repo, i.e. -cboettig/piggyback). By default will guess the current repository's -GitHub origin.

    tag

    name of release/tag on GitHub to which data assets will be -attached. Default is to use the latest available release.

    overwrite

    should existing files be overwritten when hashes do -not match? default TRUE.

    manifest

    name of the local manifest file. Note: A leading dot -(i.e. indicating a hidden file) in the manifest name will be removed -from the name used on the GitHub asset list.

    - -

    Details

    - -

    Will only upload tracked files, as identified by the local -manifest. Add files to tracking with pb_track first.

    - - -

    Examples

    -
    # NOT RUN {
    -pb_push()
    -# }
    -
    - -
    - -
    - - -
    -

    Site built with pkgdown.

    -
    - -
    -
    - - - - - - diff --git a/docs/reference/pb_track.html b/docs/reference/pb_track.html deleted file mode 100644 index 636ec2e..0000000 --- a/docs/reference/pb_track.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - -Track data files of a given pattern or location — pb_track • piggyback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - -
    - -

    Track data files of a given pattern or location

    - -
    - -
    pb_track(glob = NULL, repo_root = usethis::proj_get())
    - -

    Arguments

    - - - - - - - - - - -
    glob

    vector of file names and/or glob pattern (e.g. *.csv, data/*.csv) -which will be tracked by piggyback. Omit (default NULL) to just return -a list of files currently tracked.

    repo_root

    repository root, will be guessed by usethis otherwise.

    - -

    Value

    - -

    list of tracked files (invisibly)

    - -

    Details

    - -

    Note: tracked patterns are simply written to .pbattributes -(analogous to .gitattributes in git-lfs.) You can also edit this -file manually. You will probably want to check in .psattributes to -as to version control., with git add .psattributes. Note that -tracked file patterns will also be added to .gitignore.

    - - -

    Examples

    -
    # NOT RUN {
    -## Track all .csv and .tsv files
    -pb_track(c("*.tsv", "*.tsv.gz"))
    -
    -# }
    -
    - -
    - -
    - - -
    -

    Site built with pkgdown 1.3.0.9000.

    -
    -
    -
    - - - - - - diff --git a/docs/reference/pb_upload.html b/docs/reference/pb_upload.html deleted file mode 100644 index 659a946..0000000 --- a/docs/reference/pb_upload.html +++ /dev/null @@ -1,142 +0,0 @@ - -Upload data to an existing release — pb_upload • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    NOTE: you must first create a release if one does not already exists.

    -
    - -
    -
    pb_upload(
    -  file,
    -  repo = guess_repo(),
    -  tag = "latest",
    -  name = NULL,
    -  overwrite = "use_timestamps",
    -  use_timestamps = NULL,
    -  show_progress = TRUE,
    -  .token = get_token(),
    -  dir = "."
    -)
    -
    - -
    -

    Arguments

    -
    file
    -

    path to file to be uploaded

    -
    repo
    -

    Repository name in format "owner/repo". Will guess the current -repo if not specified.

    -
    tag
    -

    tag for the GitHub release to which this data should be attached.

    -
    name
    -

    name for uploaded file. If not provided will use the basename of -file (i.e. filename without directory)

    -
    overwrite
    -

    overwrite any existing file with the same name already -attached to the on release? Default behavior is based on timestamps, -only overwriting those files which are older.

    -
    use_timestamps
    -

    DEPRECATED.

    -
    show_progress
    -

    logical, show a progress bar be shown for uploading? -Defaults to TRUE.

    -
    .token
    -

    GitHub authentication token, see [gh::gh_token()]

    -
    dir
    -

    directory relative to which file names should be based.

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -# Needs your real token to run
    -
    -readr::write_tsv(mtcars,"mtcars.tsv.xz")
    -pb_upload("mtcars.tsv.xz", "cboettig/piggyback-tests")
    -}
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/piggyback-package.html b/docs/reference/piggyback-package.html deleted file mode 100644 index f6ea922..0000000 --- a/docs/reference/piggyback-package.html +++ /dev/null @@ -1,129 +0,0 @@ - -piggyback: Managing Larger Data on a GitHub Repository — piggyback-package • piggyback - - -
    -
    - - - -
    -
    - - -
    -

    Because larger (> 50 MB) data files cannot easily be committed to git, -a different approach is required to manage data associated with an analysis in a -GitHub repository. This package provides a simple work-around by allowing larger -(up to 2 GB) data files to piggyback on a repository as assets attached to individual -GitHub releases. These files are not handled by git in any way, but instead are -uploaded, downloaded, or edited directly by calls through the GitHub API. These -data files can be versioned manually by creating different releases. This approach -works equally well with public or private repositories. Data can be uploaded -and downloaded programmatically from scripts. No authentication is required to -download data from public repositories.

    -
    - - -
    -

    Details

    -

    It has two main modes or workflows:

    • pb_upload() / pb_download(): Upload and download individual files to/from -the desired release of the specified repository

    • -
    - -
    -

    Author

    -

    Maintainer: Carl Boettiger cboettig@gmail.com (ORCID) [copyright holder]

    -

    Other contributors:

    • Mark Padgham (ORCID) [contributor]

    • -
    • Jeffrey O Hanson (ORCID) [contributor]

    • -
    • Kevin Kuo (ORCID) [contributor]

    • -
    - -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.1.

    -
    - -
    - - - - - - - - diff --git a/docs/sitemap.xml b/docs/sitemap.xml deleted file mode 100644 index 014000d..0000000 --- a/docs/sitemap.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - /404.html - - - /articles/alternatives.html - - - /articles/index.html - - - /articles/intro.html - - - /authors.html - - - /CODE_OF_CONDUCT.html - - - /index.html - - - /LICENSE.html - - - /news/index.html - - - /onboarding-submission.html - - - /paper.html - - - /reference/index.html - - - /reference/pb_delete.html - - - /reference/pb_download.html - - - /reference/pb_download_url.html - - - /reference/pb_list.html - - - /reference/pb_new_release.html - - - /reference/pb_pull.html - - - /reference/pb_push.html - - - /reference/pb_track.html - - - /reference/pb_upload.html - - - /reference/piggyback-package.html - - From a0e3f1bca66cf09e2b1cfa65d8a7dd47c359fac4 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 11:30:48 -0500 Subject: [PATCH 09/16] switch to standard rmarkdown chunks with eval=FALSE --- README.Rmd | 10 +-- vignettes/piggyback.Rmd | 132 +++++++++++++++++----------------------- 2 files changed, 61 insertions(+), 81 deletions(-) diff --git a/README.Rmd b/README.Rmd index d9dce35..809f8a9 100644 --- a/README.Rmd +++ b/README.Rmd @@ -38,12 +38,12 @@ No authentication is required to download data from public repositories. ## Installation Install from CRAN via: -```r +```{r} install.packages("piggyback") ``` You can install the development version from [GitHub](https://github.com/ropensci/piggyback) with either r-universe or with remotes: -```r +```{r} install.packages("piggyback", repos = c('https://ropensci.r-universe.dev', getOption("repos"))) # install.packages("remotes") remotes::install_github("ropensci/piggyback") @@ -53,7 +53,7 @@ See [getting started vignette](https://docs.ropensci.org/piggyback/articles/intr for a more comprehensive introduction. Download data attached to a GitHub release: -```r +```{r} library(piggyback) pb_download("iris2.tsv.gz", repo = "cboettig/piggyback-tests", @@ -72,12 +72,12 @@ or a GITHUB_PAT environment variable - for more information, see the vignette no [authentication](https://docs.ropensci.org/piggyback/articles/piggyback.html#authentication). We can also upload data to a release. Start by creating a release: -```r +```{r} pb_release_create(repo = "cboettig/piggyback-tests", tag = "v0.0.2") #> ✔ Created new release "v0.0.2". ``` then upload to it: -```r +```{r} readr::write_tsv(mtcars, "mtcars.tsv.gz") pb_upload("mtcars.tsv.gz", repo = "cboettig/piggyback-tests") #> ℹ Uploading to latest release: "v0.0.2". diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index 253245f..94f0f4c 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -36,47 +36,45 @@ number of files or bandwidth to deliver them. ## Authentication No authentication is required to download data from *public* GitHub repositories -using `piggyback`. Nevertheless, `piggyback` recommends setting a token when -possible to avoid rate limits. To upload data to any repository, or to download -data from *private* repositories, you will need to authenticate first. +using `piggyback`. Nevertheless, we recommends setting a token when possible to +avoid rate limits. To upload data to any repository, or to download data from +*private* repositories, you will need to authenticate first. -`piggyback` uses the same GitHub Personal Access Token (PAT) that devtools, usethis, and -friends use (`gh::gh_token()`). The current best practice for managing your GitHub -credentials is detailed in this [usethis vignette](https://usethis.r-lib.org/articles/git-credentials.html). +`piggyback` uses the same GitHub Personal Access Token (PAT) that devtools, +usethis, and friends use (`gh::gh_token()`). The current best practice for +managing your GitHub credentials is detailed in this +[usethis vignette](https://usethis.r-lib.org/articles/git-credentials.html). You can also add the token as an environment variable, which may be useful in situations where you use piggyback non-interactively (i.e.scheduled/automated scripts). Here are the relevant steps: - Create a [GitHub Token](https://github.com/settings/tokens/new?scopes=repo,gist&description=PIGGYBACK_PAT) -- Add the environment variable. You can do this: - - via project-specific Renviron: `usethis::edit_r_environ("project")`. You should - then add the Renviron to your gitignore via `usethis::use_git_ignore(".Renviron")`. - **Avoid committing your GITHUB_PAT to the repository for security reasons!** - - via `Sys.setenv(GITHUB_PAT = "{your token}")` in your console for oneoff usage. - Avoid adding this line to your R scripts -- remember, the goal here is to avoid - writing your private token in any file that might be shared, even privately. + +- Add the environment variable: + - via project-specific Renviron: + - `usethis::use_git_ignore(".Renviron")` - update your gitignore to prevent + accidentally committing your token to GitHub + - `usethis::edit_r_environ("project")` to open the Renviron file, and then + add your token, e.g. `GITHUB_PAT=ghp_a1b2c3d4e5f6g7` + - via `Sys.setenv(GITHUB_PAT = "ghp_a1b2c3d4e5f6g7")` in your console for oneoff + usage. Avoid adding this line to your R scripts -- remember, the goal here is + to avoid writing your private token in any file that might be shared, even + privately. ## Downloading data Download a file from a release: -```r -library(piggyback) +```{r} pb_download("iris2.tsv.gz", repo = "cboettig/piggyback-tests", tag = "v0.0.1", dest = tempdir()) -``` -``` -ℹ Downloading "iris2.tsv.gz"... - |======================================================| 100% -``` -```r +#> ℹ Downloading "iris2.tsv.gz"... +#> |======================================================| 100% fs::dir_tree(tempdir()) -``` -``` -/tmp/RtmpWxJSZj -└── iris2.tsv.gz +#> /tmp/RtmpWxJSZj +#> └── iris2.tsv.gz ``` **Tips:** @@ -90,30 +88,23 @@ from most recent release (`latest`). in your repository: download locations will be relative to Project root. `tempdir()` is used throughout the examples only to meet CRAN policies and is unlikely to be the choice you actually want here. - 4. Omit the file name to download all assets connected with a given release. -```r +```{r} pb_download(repo = "cboettig/piggyback-tests", tag = "v0.0.1", dest = tempdir()) -``` -``` -ℹ Downloading "diamonds.tsv.gz"... - |======================================================| 100% -ℹ Downloading "iris.tsv.gz"... - |======================================================| 100% -ℹ Downloading "iris.tsv.xz"... - |======================================================| 100% -``` -```r +#> ℹ Downloading "diamonds.tsv.gz"... +#> |======================================================| 100% +#> ℹ Downloading "iris.tsv.gz"... +#> |======================================================| 100% +#> ℹ Downloading "iris.tsv.xz"... +#> |======================================================| 100% fs::dir_tree(tempdir()) -``` -``` -/tmp/RtmpWxJSZj -├── diamonds.tsv.gz -├── iris.tsv.gz -├── iris.tsv.xz -└── iris2.tsv.gz +#> /tmp/RtmpWxJSZj +#> ├── diamonds.tsv.gz +#> ├── iris.tsv.gz +#> ├── iris.tsv.xz +#> └── iris2.tsv.gz ``` These defaults mean that in most cases, it is sufficient to simply call `pb_download()` @@ -136,15 +127,13 @@ embedded directly into another R script, avoiding any dependence on `piggyback` (provided the repository is already public.) To get a list of public download URLs rather than actually downloading the files, use `pb_download_url()`: -```r +```{r} pb_download_url(repo = "cboettig/piggyback-tests", tag = "v0.0.1") -``` -``` -[1] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/diamonds.tsv.gz" -[2] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.gz" -[3] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.xz" -[4] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris2.tsv.gz" +#> [1] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/diamonds.tsv.gz" +#> [2] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.gz" +#> [3] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.xz" +#> [4] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris2.tsv.gz" ``` Note that these will not work if authentication is required to download them @@ -163,28 +152,23 @@ necessary each time you upload a file. If maintaining old versions of the data is not useful, you can stick with a single release and upload all of your data there. -```r +```{r} pb_release_create(repo = "cboettig/piggyback-tests", tag = "v0.0.2") -``` -``` -✔ Created new release "v0.0.2". +#> ✔ Created new release "v0.0.2". ``` Once we have at least one release available, we are ready to upload. By default, `pb_upload` will attach data to the latest release. -```r +```{r} ## We'll need some example data first. ## Pro tip: compress your tabular data to save space & speed upload/downloads readr::write_tsv(mtcars, "mtcars.tsv.gz") -pb_upload("mtcars.tsv.gz", - repo = "cboettig/piggyback-tests") -``` -``` -ℹ Uploading to latest release: "v0.0.2". -ℹ Uploading mtcars.tsv.gz ... - |===================================================| 100% +pb_upload("mtcars.tsv.gz", repo = "cboettig/piggyback-tests") +#> ℹ Uploading to latest release: "v0.0.2". +#> ℹ Uploading mtcars.tsv.gz ... +#> |===================================================| 100% ``` Like `pb_download()`, `pb_upload()` will overwrite any file of the same name already @@ -196,7 +180,7 @@ parameter. You can pass in a vector of file paths with something like `list.files()` to the `file` argument of `pb_upload()` in order to upload multiple files. Some common patterns: -```r +```{r} library(magrittr) ## upload a folder of data @@ -215,13 +199,11 @@ release by using `pb_download()` with no arguments. Delete a file from a release: -```r +```{r} pb_delete(file = "mtcars.tsv.gz", repo = "cboettig/piggyback-tests", tag = "v0.0.1") -``` -``` -ℹ Deleted "mtcars.tsv.gz" from "v0.0.1" release on "cboettig/piggyback-tests" +> ℹ Deleted "mtcars.tsv.gz" from "v0.0.1" release on "cboettig/piggyback-tests" ``` Note that this is irreversible unless you have a copy of the data elsewhere. @@ -230,16 +212,14 @@ Note that this is irreversible unless you have a copy of the data elsewhere. List all files currently piggybacking on a given release. Omit `tag` to see files on all releases. -```r +```{r} pb_list(repo = "cboettig/piggyback-tests", tag = "v0.0.1") -``` -``` - file_name size timestamp tag owner repo -1 diamonds.tsv.gz 571664 2021-09-07 23:38:31 v0.0.1 cboettig piggyback-tests -2 iris.tsv.gz 846 2021-08-05 20:00:09 v0.0.1 cboettig piggyback-tests -3 iris.tsv.xz 848 2020-03-07 06:18:32 v0.0.1 cboettig piggyback-tests -4 iris2.tsv.gz 846 2018-10-05 17:04:33 v0.0.1 cboettig piggyback-tests +#> file_name size timestamp tag owner repo +#> 1 diamonds.tsv.gz 571664 2021-09-07 23:38:31 v0.0.1 cboettig piggyback-tests +#> 2 iris.tsv.gz 846 2021-08-05 20:00:09 v0.0.1 cboettig piggyback-tests +#> 3 iris.tsv.xz 848 2020-03-07 06:18:32 v0.0.1 cboettig piggyback-tests +#> 4 iris2.tsv.gz 846 2018-10-05 17:04:33 v0.0.1 cboettig piggyback-tests ``` ## Caching From 38193e125f3784525a7dc302ff21c45bf5185dd7 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 11:31:03 -0500 Subject: [PATCH 10/16] shorten DESCRIPTION description based on new readme --- DESCRIPTION | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index c5135ee..7786ad9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,16 +1,10 @@ Package: piggyback Version: 0.1.5.9004 Title: Managing Larger Data on a GitHub Repository -Description: Because larger (> 50 MB) data files cannot easily be committed to git, - a different approach is required to manage data associated with an analysis in a - GitHub repository. This package provides a simple work-around by allowing larger - (up to 2 GB) data files to piggyback on a repository as assets attached to individual - GitHub releases. These files are not handled by git in any way, but instead are - uploaded, downloaded, or edited directly by calls through the GitHub API. These - data files can be versioned manually by creating different releases. This approach - works equally well with public or private repositories. Data can be uploaded - and downloaded programmatically from scripts. No authentication is required to - download data from public repositories. +Description: Helps store files as GitHub release assets, which is a convenient +way for large/binary data files to piggyback onto public and private GitHub +repositories. Includes functions for file downloads, uploads, and managing +releases via the GitHub API. Authors@R: c(person("Carl", "Boettiger", email = "cboettig@gmail.com", role = c("aut", "cre", "cph"), From de822e30047a70373c092fc54dbb8dec6f630677 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 11:34:20 -0500 Subject: [PATCH 11/16] reknit readme --- DESCRIPTION | 6 +++--- README.Rmd | 7 +++---- README.md | 4 ++-- codemeta.json | 18 +++++++++++++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 7786ad9..8642924 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,9 +2,9 @@ Package: piggyback Version: 0.1.5.9004 Title: Managing Larger Data on a GitHub Repository Description: Helps store files as GitHub release assets, which is a convenient -way for large/binary data files to piggyback onto public and private GitHub -repositories. Includes functions for file downloads, uploads, and managing -releases via the GitHub API. + way for large/binary data files to piggyback onto public and private GitHub + repositories. Includes functions for file downloads, uploads, and managing + releases via the GitHub API. Authors@R: c(person("Carl", "Boettiger", email = "cboettig@gmail.com", role = c("aut", "cre", "cph"), diff --git a/README.Rmd b/README.Rmd index 809f8a9..1660ae9 100644 --- a/README.Rmd +++ b/README.Rmd @@ -7,7 +7,7 @@ output: github_document ```{r setup, include = FALSE} knitr::opts_chunk$set( - eval = TRUE, + eval = FALSE, collapse = TRUE, message = FALSE, comment = "#>", @@ -29,7 +29,7 @@ knitr::opts_chunk$set( [![DOI](http://joss.theoj.org/papers/10.21105/joss.00971/status.svg)](https://doi.org/10.21105/joss.00971) -`{piggyback}` provides an R interface for storing files as GitHub release assets, +`piggyback` provides an R interface for storing files as GitHub release assets, which is a convenient way for large/binary data files to _piggyback_ onto public and private GitHub repositories. This package includes functions for file downloads, uploads, and managing releases, which then are passed to the GitHub API. @@ -117,8 +117,7 @@ Please note that this project is released with a [Contributor Code of Conduct](https://ropensci.org/code-of-conduct/). By participating in this project you agree to abide by its terms. -```{r include=FALSE} -unlink("*.gz") +```{r eval=TRUE, include=FALSE} codemeta::write_codemeta() ``` diff --git a/README.md b/README.md index b7ccec5..38ced78 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ Status](https://badges.ropensci.org/220_status.svg)](https://github.com/ropensci [![DOI](http://joss.theoj.org/papers/10.21105/joss.00971/status.svg)](https://doi.org/10.21105/joss.00971) -`{piggyback}` provides an R interface for storing files as GitHub -release assets, which is a convenient way for large/binary data files to +`piggyback` provides an R interface for storing files as GitHub release +assets, which is a convenient way for large/binary data files to *piggyback* onto public and private GitHub repositories. This package includes functions for file downloads, uploads, and managing releases, which then are passed to the GitHub API. diff --git a/codemeta.json b/codemeta.json index af1aeb7..80b2449 100644 --- a/codemeta.json +++ b/codemeta.json @@ -2,12 +2,12 @@ "@context": "https://doi.org/10.5063/schema/codemeta-2.0", "@type": "SoftwareSourceCode", "identifier": "piggyback", - "description": "Because larger (> 50 MB) data files cannot easily be committed to git, a different approach is required to manage data associated with an analysis in a GitHub repository. This package provides a simple work-around by allowing larger (up to 2 GB) data files to piggyback on a repository as assets attached to individual GitHub releases. These files are not handled by git in any way, but instead are uploaded, downloaded, or edited directly by calls through the GitHub API. These data files can be versioned manually by creating different releases. This approach works equally well with public or private repositories. Data can be uploaded and downloaded programmatically from scripts. No authentication is required to download data from public repositories.", + "description": "Helps store files as GitHub release assets, which is a convenient way for large/binary data files to piggyback onto public and private GitHub repositories. Includes functions for file downloads, uploads, and managing releases via the GitHub API.", "name": "piggyback: Managing Larger Data on a GitHub Repository", "codeRepository": "https://github.com/ropensci/piggyback", "issueTracker": "https://github.com/ropensci/piggyback/issues", "license": "https://spdx.org/licenses/GPL-3.0", - "version": "0.1.5.9003", + "version": "0.1.5.9004", "programmingLanguage": { "@type": "ComputerLanguage", "name": "R", @@ -74,6 +74,18 @@ } ], "softwareSuggestions": [ + { + "@type": "SoftwareApplication", + "identifier": "arrow", + "name": "arrow", + "provider": { + "@id": "https://cran.r-project.org", + "@type": "Organization", + "name": "Comprehensive R Archive Network (CRAN)", + "url": "https://cran.r-project.org" + }, + "sameAs": "https://CRAN.R-project.org/package=arrow" + }, { "@type": "SoftwareApplication", "identifier": "spelling", @@ -282,5 +294,5 @@ }, "SystemRequirements": null }, - "fileSize": "380.757KB" + "fileSize": "397.705KB" } From 61647026717e4d9f218841e13584c1cf768d1414 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 12:58:32 -0500 Subject: [PATCH 12/16] start adding section on reading in URLs --- vignettes/piggyback.Rmd | 206 +++++++++++++++++++++++++++++----------- 1 file changed, 148 insertions(+), 58 deletions(-) diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index 94f0f4c..0c9117c 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -9,14 +9,11 @@ vignette: > %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - results="hide", - eval = Sys.getenv("TAN_GH_TOKEN", FALSE) -) - -Sys.setenv(piggyback_cache_duration=0) +knitr::opts_chunk$set(eval = FALSE) +``` +```{r} +library(piggyback) +library(magrittr) ``` ## Why `piggyback`? @@ -46,53 +43,56 @@ managing your GitHub credentials is detailed in this [usethis vignette](https://usethis.r-lib.org/articles/git-credentials.html). You can also add the token as an environment variable, which may be useful in -situations where you use piggyback non-interactively (i.e.scheduled/automated scripts). +situations where you use piggyback non-interactively (i.e. automated scripts). Here are the relevant steps: - Create a [GitHub Token](https://github.com/settings/tokens/new?scopes=repo,gist&description=PIGGYBACK_PAT) - - Add the environment variable: - via project-specific Renviron: - - `usethis::use_git_ignore(".Renviron")` - update your gitignore to prevent - accidentally committing your token to GitHub + - `usethis::use_git_ignore(".Renviron")` to update your gitignore - this + prevents accidentally committing your token to GitHub - `usethis::edit_r_environ("project")` to open the Renviron file, and then add your token, e.g. `GITHUB_PAT=ghp_a1b2c3d4e5f6g7` - - via `Sys.setenv(GITHUB_PAT = "ghp_a1b2c3d4e5f6g7")` in your console for oneoff + - via `Sys.setenv(GITHUB_PAT = "ghp_a1b2c3d4e5f6g7")` in your console for adhoc usage. Avoid adding this line to your R scripts -- remember, the goal here is to avoid writing your private token in any file that might be shared, even privately. -## Downloading data +## Download Files Download a file from a release: ```{r} -pb_download("iris2.tsv.gz", - repo = "cboettig/piggyback-tests", - tag = "v0.0.1", - dest = tempdir()) +pb_download( + file = "iris2.tsv.gz", + dest = tempdir(), + repo = "cboettig/piggyback-tests", + tag = "v0.0.1" + ) #> ℹ Downloading "iris2.tsv.gz"... #> |======================================================| 100% fs::dir_tree(tempdir()) #> /tmp/RtmpWxJSZj #> └── iris2.tsv.gz ``` - -**Tips:** - -1. Whenever you are working from a location inside a git repository corresponding -to your GitHub repo, you can simply omit the `repo` argument and it will be detected -automatically. -2. Likewise, if you omit the release `tag`, `pb_download` will simply pull data -from most recent release (`latest`). -3. You can omit `tempdir()` if you are using an RStudio Project (`.Rproj` file) -in your repository: download locations will be relative to Project root. -`tempdir()` is used throughout the examples only to meet CRAN policies and is -unlikely to be the choice you actually want here. -4. Omit the file name to download all assets connected with a given release. +Some default behaviors to know about: + +1. The `repo` argument in most piggyback functions will default to detecting the + relevant GitHub repo based on your current working directory's git configs, + so in many cases you can omit the `repo` argument. +2. The `tag` argument in most functions defaults to "latest", which typically + refers to the most recently created release of the repository, unless there + is a release specifically named "latest" or if you have marked a different + release as "latest" via the GitHub UI. +3. The `dest` argument defaults to your current working directory (`"."`). We + use `tempdir()` to meet CRAN policies for the purposes of examples. +4. The `file` argument in `pb_download` defaults to NULL, which will download + all files connected to a given release: ```{r} -pb_download(repo = "cboettig/piggyback-tests", - tag = "v0.0.1", - dest = tempdir()) +pb_download( + repo = "cboettig/piggyback-tests", + tag = "v0.0.1", + dest = tempdir() +) #> ℹ Downloading "diamonds.tsv.gz"... #> |======================================================| 100% #> ℹ Downloading "iris.tsv.gz"... @@ -106,39 +106,130 @@ fs::dir_tree(tempdir()) #> ├── iris.tsv.xz #> └── iris2.tsv.gz ``` - -These defaults mean that in most cases, it is sufficient to simply call `pb_download()` -without additional arguments to pull in any data associated with a project on a -GitHub repo that is too large to commit to git directly. - -Notice that above, `iris2.tsv.gz` was not downloaded. `pb_download()` will skip -downloading of any file that already exists locally, if the timestamp on the local -copy is more recent than the timestamp on the GitHub copy. Use the `overwrite` -parameter to control this behaviour. +5. The `use_timestamps` argument defaults to TRUE - notice that above, + `iris2.tsv.gz` was not downloaded. If `use_timestamps` is TRUE, pb_download() + will compare the local file timestamp against the GitHub file timestamp, and + only download the file if it has changed. `pb_download()` also includes arguments to control the progress bar or if any particular files should not be downloaded. -### Public Download URLs +## Download URLs -Sometimes it is preferable to have a URL from which the data can be read in directly, -rather than downloading the data to a local file. For example, such a URL can be -embedded directly into another R script, avoiding any dependence on `piggyback` -(provided the repository is already public.) To get a list of public download URLs -rather than actually downloading the files, use `pb_download_url()`: +Sometimes it is preferable to have a URL from which the data can be read in directly. +These URL can then be passed into another R function, which can be more elegant +and performant than having to first download the files locally. Enter `pb_download_url()`: ```{r} -pb_download_url(repo = "cboettig/piggyback-tests", - tag = "v0.0.1") +pb_download_url(repo = "cboettig/piggyback-tests", tag = "v0.0.1") #> [1] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/diamonds.tsv.gz" #> [2] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.gz" #> [3] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris.tsv.xz" #> [4] "https://github.com/cboettig/piggyback-tests/releases/download/v0.0.1/iris2.tsv.gz" ``` -Note that these will not work if authentication is required to download them +By default, this function returns the same download URL that you would get by +visiting the release page, right-clicking on the file, and copying the link (aka +the "browser_download_url"). This URL is served by GitHub's web servers and not +its API servers, and therefore not as restrictive with rate-limiting. + +However, this URL is not accessible for private repositories, since the auth +tokens are handled by the GitHub API. You can retrieve the API download url for +private repositories by passing in `"api"` to the `url_type` argument: +```{r} +pb_download_url(repo = "cboettig/piggyback-tests", tag = "v0.0.1", url_type = "api") +#> [1] https://api.github.com/repos/cboettig/piggyback-tests/releases/assets/44261315 +#> [2] https://api.github.com/repos/cboettig/piggyback-tests/releases/assets/41841778 +#> [3] https://api.github.com/repos/cboettig/piggyback-tests/releases/assets/18538636 +#> [4] https://api.github.com/repos/cboettig/piggyback-tests/releases/assets/8990141 +``` + +`pb_download_url` otherwise shares similar default behaviors with `pb_download` +for the `file`, `repo`, and `tag` arguments. + +## Reading data for R usage -## Reading data +`piggyback` supports several general patterns for reading data into R, with +increasing degrees of performance/efficiency (and complexity): + +- `pb_download()` files to disk and then reading files with a function that reads +from disk into memory +- `pb_download_url()` a set of URLs and then passing those URLs to a function that +retrieves those URLs directly into memory +- Disk-based workflows which require downloading all files first but then can +perform queries before reading into memory +- Cloud-native workflows which can perform queries directly on the URLs before +reading into memory + +We recommend the latter two approaches in cases where performance and efficiency +matter, and have some vignettes with examples: +- [cloud native workflows](https://docs.ropensci.org/piggyback/articles/cloud_native.html) +- disk native workflows + +### Reading from URLs + +Many read functions accept URLs, including `read.csv()`, `arrow::read_parquet()`, +`readr::read_csv()`, `data.table::fread()`, and `jsonlite::fromJSON()`, so reading +in one file can be done efficiently by passing along the output of `pb_download_url()` +```{r} +pb_download_url("mtcars.csv", repo = "tanho63/piggyback-tests", tag = "v0.0.2") %>% + read.csv() +#> # A data.frame: 32 × 12 +#> X mpg cyl disp hp drat wt qsec vs am gear +#> +#> 1 Mazda… 21 6 160 110 3.9 2.62 16.5 0 1 4 +#> 2 Mazda… 21 6 160 110 3.9 2.88 17.0 0 1 4 +#> 3 Datsu… 22.8 4 108 93 3.85 2.32 18.6 1 1 4 +#> 4 Horne… 21.4 6 258 110 3.08 3.22 19.4 1 0 3 +#> 5 Horne… 18.7 8 360 175 3.15 3.44 17.0 0 0 3 +#> # ℹ 27 more rows +#> # ℹ 1 more variable: carb +#> # ℹ Use `print(n = ...)` to see more rows +``` + +Some functions also accept connections when wrapped by `url()`, e.g. for `readRDS()`: +```{r} +pb_url <- pb_download_url("mtcars.rds", repo = "tanho63/piggyback-tests", tag = "v0.0.2") %>% + url() +readRDS(pb_url) +#> # A data.frame: 32 × 11 +#> mpg cyl disp hp drat wt qsec vs am gear carb +#> +#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 +#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 +#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 +#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 +#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 +#> # ℹ 27 more rows +#> # ℹ Use `print(n = ...)` to see more rows +close(pb_url) +``` +Note that using `url()` requires that we close the connection after reading it, +or else we will receive warnings about leaving open connections. + +We can also use this `url()` approach to pass along authentication for private +repositories, e.g. +```{r} +pb_url <- pb_download_url("mtcars.rds", repo = "tanho63/piggyback-private", url_type = "api") %>% + url( + headers = c( + "Accept" = "application/octet-stream", + "Authorization" = paste("Bearer", gh::gh_token()) + ) + ) +readRDS(pb_url) +#> # A tibble: 32 × 11 +#> mpg cyl disp hp drat wt qsec vs am gear carb +#> +#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 +#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 +#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 +#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 +#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 +#> # ℹ 27 more rows +#> # ℹ Use `print(n = ...)` to see more rows +close(pb_url) +``` ## Uploading data @@ -178,7 +269,8 @@ parameter. ### Multiple files -You can pass in a vector of file paths with something like `list.files()` to the `file` argument of `pb_upload()` in order to upload multiple files. Some common patterns: +You can pass in a vector of file paths with something like `list.files()` to the +`file` argument of `pb_upload()` in order to upload multiple files. Some common patterns: ```{r} library(magrittr) @@ -190,7 +282,6 @@ list.files("data") %>% ## upload certain file extensions list.files(pattern = c("*.tsv.gz", "*.tif", "*.zip")) %>% pb_upload(repo = "cboettig/piggyback-tests", tag = "v0.0.1") - ``` Similarly, you can download all current data assets of the latest or specified release by using `pb_download()` with no arguments. @@ -203,7 +294,7 @@ Delete a file from a release: pb_delete(file = "mtcars.tsv.gz", repo = "cboettig/piggyback-tests", tag = "v0.0.1") -> ℹ Deleted "mtcars.tsv.gz" from "v0.0.1" release on "cboettig/piggyback-tests" +#> ℹ Deleted "mtcars.tsv.gz" from "v0.0.1" release on "cboettig/piggyback-tests" ``` Note that this is irreversible unless you have a copy of the data elsewhere. @@ -213,8 +304,7 @@ List all files currently piggybacking on a given release. Omit `tag` to see files on all releases. ```{r} -pb_list(repo = "cboettig/piggyback-tests", - tag = "v0.0.1") +pb_list(repo = "cboettig/piggyback-tests", tag = "v0.0.1") #> file_name size timestamp tag owner repo #> 1 diamonds.tsv.gz 571664 2021-09-07 23:38:31 v0.0.1 cboettig piggyback-tests #> 2 iris.tsv.gz 846 2021-08-05 20:00:09 v0.0.1 cboettig piggyback-tests From b595bbdf1991e859e6747001043a22dae6c17231 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 13:07:10 -0500 Subject: [PATCH 13/16] relocate dots to before named args --- R/pb_read.R | 2 +- R/pb_write.R | 4 ++-- man/pb_read.Rd | 6 +++--- man/pb_write.Rd | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/R/pb_read.R b/R/pb_read.R index 62d8c96..79e6baf 100644 --- a/R/pb_read.R +++ b/R/pb_read.R @@ -28,10 +28,10 @@ #' }) #' } pb_read <- function(file, + ..., repo = guess_repo(), tag = "latest", read_function = guess_read_function(file), - ..., .token = gh::gh_token()) { stopifnot( is.character(file) && length(file) == 1, diff --git a/R/pb_write.R b/R/pb_write.R index 60b24e1..10f4b1a 100644 --- a/R/pb_write.R +++ b/R/pb_write.R @@ -5,6 +5,7 @@ #' #' @param x object: memory object to save to piggyback #' @param file string: file name +#' @param ... additional arguments passed to `write_function` #' @param repo string: GH repository name in format "owner/repo". Default #' `guess_repo()` tries to guess based on current working directory's git repo #' @param tag string: tag for the GH release, defaults to "latest" @@ -14,7 +15,6 @@ #' `guess_write_function(file)` will check the file extension and try to find an #' appropriate write function if the extension is one of rds, csv, tsv, parquet, #' txt, or json, and will abort if not found. -#' @param ... additional arguments passed to `write_function` #' @param .token GitHub authentication token, see [gh::gh_token()] #' #' @export @@ -31,10 +31,10 @@ #'} pb_write <- function(x, file, + ..., repo = guess_repo(), tag = "latest", write_function = guess_write_function(file), - ..., .token = gh::gh_token()) { stopifnot( is.character(file) && length(file) == 1, diff --git a/man/pb_read.Rd b/man/pb_read.Rd index 7b8bd2c..27c3c45 100644 --- a/man/pb_read.Rd +++ b/man/pb_read.Rd @@ -6,16 +6,18 @@ \usage{ pb_read( file, + ..., repo = guess_repo(), tag = "latest", read_function = guess_read_function(file), - ..., .token = gh::gh_token() ) } \arguments{ \item{file}{string: file name} +\item{...}{additional arguments passed to \code{read_function} after file} + \item{repo}{string: GH repository name in format "owner/repo". Default \code{guess_repo()} tries to guess based on current working directory's git repo} @@ -27,8 +29,6 @@ passed in via \code{...}. Default \code{guess_read_function(file)} will check th extension and try to find an appropriate read function if the extension is one of rds, csv, tsv, parquet, txt, or json, and will abort if not found.} -\item{...}{additional arguments passed to \code{read_function} after file} - \item{.token}{GitHub authentication token, see \code{\link[gh:gh_token]{gh::gh_token()}}} } \value{ diff --git a/man/pb_write.Rd b/man/pb_write.Rd index 07b198d..05d786a 100644 --- a/man/pb_write.Rd +++ b/man/pb_write.Rd @@ -7,10 +7,10 @@ pb_write( x, file, + ..., repo = guess_repo(), tag = "latest", write_function = guess_write_function(file), - ..., .token = gh::gh_token() ) } @@ -19,6 +19,8 @@ pb_write( \item{file}{string: file name} +\item{...}{additional arguments passed to \code{write_function}} + \item{repo}{string: GH repository name in format "owner/repo". Default \code{guess_repo()} tries to guess based on current working directory's git repo} @@ -31,8 +33,6 @@ and any additional arguments are subsequently passed in via \code{...}. Default appropriate write function if the extension is one of rds, csv, tsv, parquet, txt, or json, and will abort if not found.} -\item{...}{additional arguments passed to \code{write_function}} - \item{.token}{GitHub authentication token, see \code{\link[gh:gh_token]{gh::gh_token()}}} } \value{ From d9c7becb41783242d46b8e64369e70aafc913a8d Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 13:23:49 -0500 Subject: [PATCH 14/16] try to align diffs --- vignettes/piggyback.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index 0c9117c..c6a0ea9 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -114,7 +114,7 @@ fs::dir_tree(tempdir()) `pb_download()` also includes arguments to control the progress bar or if any particular files should not be downloaded. -## Download URLs +### Download URLs Sometimes it is preferable to have a URL from which the data can be read in directly. These URL can then be passed into another R function, which can be more elegant From ddb60d74310db9b419fe97c7debae2245e30d642 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 14:29:42 -0500 Subject: [PATCH 15/16] add pb_read section --- vignettes/piggyback.Rmd | 116 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 110 insertions(+), 6 deletions(-) diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index c6a0ea9..51df1f5 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -166,11 +166,111 @@ matter, and have some vignettes with examples: - [cloud native workflows](https://docs.ropensci.org/piggyback/articles/cloud_native.html) - disk native workflows +### Reading files + +`pb_read()` is a wrapper on the first pattern - it downloads the file to a temp +file, then reads that file into memory, then deletes the temporary file. It +works for both public and private repositories, handling authentication under +the hood: + +```{r} +pb_read("mtcars.rds", repo = "tanho63/piggyback-private") +#> # A data.frame: 32 × 11 +#> mpg cyl disp hp drat wt qsec vs am gear carb +#> +#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 +#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 +#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 +#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 +#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 +#> # ℹ 27 more rows +#> # ℹ 1 more variable: carb +pb_read("mtcars.parquet", repo = "tanho63/piggyback-private") +#> # A data.frame: 32 × 11 +#> mpg cyl disp hp drat wt qsec vs am gear carb +#> +#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 +#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 +#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 +#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 +#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 +#> # ℹ 27 more rows +#> # ℹ 1 more variable: carb +``` + +By default, `pb_read` is programmed to use the following `read_function` for the +corresponding file extensions: + +- ".csv", ".csv.gz", ".csv.xz" are read with `utils::read.csv()` +- ".tsv", ".tsv.gz", ".tsv.xz" are read with `utils::read.delim()` +- ".rds" is read with `readRDS()` +- ".json" is read with `jsonlite::fromJSON()` +- ".parquet" is read with `arrow::read_parquet()` +- ".txt" is read with `readLines()` + +If a file extension is not on this list, `pb_read` will raise an error and ask +you to provide a `read_function` - you can also use this parameter to override +the default `read_function` yourself: + +```{r} +pb_read( + file = "play_by_play_2023.qs", + repo = "nflverse/nflverse-data", + tag = "pbp", + read_function = qs::qread +) +#> # A tibble: 42,251 × 372 +#> play_id game_id old_game_id home_team away_team season_type week posteam +#> +#> 1 1 2023_01_ARI_W… 2023091007 WAS ARI REG 1 NA +#> 2 39 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 3 55 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 4 77 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 5 102 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> # ℹ 42,246 more rows +#> # ℹ 364 more variables: posteam_type , defteam , side_of_field , +#> # yardline_100 , game_date , quarter_seconds_remaining , +#> # half_seconds_remaining , game_seconds_remaining , game_half , +#> # quarter_end , drive , sp , qtr , down , +#> # goal_to_go , time , yrdln , ydstogo , ydsnet , +#> # desc , play_type , yards_gained , shotgun , … +``` + +Any `read_function` can be provided so long as it accepts the filename as the +first argument, and you can pass any additional parameters via `...`: + +```{r} +pb_read( + file = "play_by_play_2023.csv", + n_max = 10, + repo = "nflverse/nflverse-data", + tag = "pbp", + read_function = readr::read_csv +) +#> # A tibble: 10 × 372 +#> play_id game_id old_game_id home_team away_team season_type week posteam +#> +#> 1 1 2023_01_ARI_W… 2023091007 WAS ARI REG 1 NA +#> 2 39 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 3 55 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 4 77 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> 5 102 2023_01_ARI_W… 2023091007 WAS ARI REG 1 WAS +#> # ℹ 5 more rows +#> # ℹ 364 more variables: posteam_type , defteam , side_of_field , +#> # yardline_100 , game_date , quarter_seconds_remaining , +#> # half_seconds_remaining , game_seconds_remaining , game_half , +#> # quarter_end , drive , sp , qtr , down , +#> # goal_to_go , time , yrdln , ydstogo , ydsnet , +#> # desc , play_type , yards_gained , shotgun , … +``` + ### Reading from URLs -Many read functions accept URLs, including `read.csv()`, `arrow::read_parquet()`, -`readr::read_csv()`, `data.table::fread()`, and `jsonlite::fromJSON()`, so reading -in one file can be done efficiently by passing along the output of `pb_download_url()` +More efficiently, many read functions accept URLs, including `read.csv()`, +`arrow::read_parquet()`, `readr::read_csv()`, `data.table::fread()`, and +`jsonlite::fromJSON()`, so reading in one file can be done by passing along the +output of `pb_download_url()`: + ```{r} pb_download_url("mtcars.csv", repo = "tanho63/piggyback-tests", tag = "v0.0.2") %>% read.csv() @@ -187,7 +287,8 @@ pb_download_url("mtcars.csv", repo = "tanho63/piggyback-tests", tag = "v0.0.2") #> # ℹ Use `print(n = ...)` to see more rows ``` -Some functions also accept connections when wrapped by `url()`, e.g. for `readRDS()`: +Some functions also accept URLs when converted into a connection by wrapping it +in `url()`, e.g. for `readRDS()`: ```{r} pb_url <- pb_download_url("mtcars.rds", repo = "tanho63/piggyback-tests", tag = "v0.0.2") %>% url() @@ -207,8 +308,8 @@ close(pb_url) Note that using `url()` requires that we close the connection after reading it, or else we will receive warnings about leaving open connections. -We can also use this `url()` approach to pass along authentication for private -repositories, e.g. +This `url()` approach allows us to pass along authentication for private repos, +e.g. ```{r} pb_url <- pb_download_url("mtcars.rds", repo = "tanho63/piggyback-private", url_type = "api") %>% url( @@ -231,6 +332,9 @@ readRDS(pb_url) close(pb_url) ``` +Note that `arrow` does not accept a `url()` connection at this time, so you should +default to `pb_read()` for private repositories instead. + ## Uploading data If your GitHub repository doesn't have any From 8f8d08d622f5655dedd90c49d8d23f42cee894c1 Mon Sep 17 00:00:00 2001 From: Tan Date: Sat, 30 Dec 2023 14:47:23 -0500 Subject: [PATCH 16/16] add pb_write and edits to pb_upload --- vignettes/piggyback.Rmd | 82 +++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/vignettes/piggyback.Rmd b/vignettes/piggyback.Rmd index 51df1f5..75cf459 100644 --- a/vignettes/piggyback.Rmd +++ b/vignettes/piggyback.Rmd @@ -333,27 +333,28 @@ close(pb_url) ``` Note that `arrow` does not accept a `url()` connection at this time, so you should -default to `pb_read()` for private repositories instead. +default to `pb_read()` if using private repositories. + ## Uploading data -If your GitHub repository doesn't have any -[releases](https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository) -yet, `piggyback` will help you quickly create one. Create new releases to manage -multiple versions of a given data file, or to organize sets of files. - -While you can create releases as often as you like, making a new release is not -necessary each time you upload a file. If maintaining old versions of the data -is not useful, you can stick with a single release and upload all of your data -there. +`piggyback` uploads data to GitHub releases. If your repository doesn't have a +release yet, `piggyback` will prompt you to create one - you can create a release +with: ```{r} pb_release_create(repo = "cboettig/piggyback-tests", tag = "v0.0.2") #> ✔ Created new release "v0.0.2". ``` -Once we have at least one release available, we are ready to upload. By default, -`pb_upload` will attach data to the latest release. +Create new releases to manage multiple versions of a given data file, or to +organize sets of files under a common topic. While you can create releases as +often as you like, making a new release is not necessary each time you upload a +file. If maintaining old versions of the data is not useful, you can stick with +a single release and upload all of your data there. + +Once we have at least one release available, we are ready to upload files. By +default, `pb_upload` will attach data to the latest release. ```{r} ## We'll need some example data first. @@ -371,14 +372,9 @@ attached to the release file by default, unless the timestamp of the previously uploaded version is more recent. You can toggle these settings with the `overwrite` parameter. -### Multiple files - -You can pass in a vector of file paths with something like `list.files()` to the -`file` argument of `pb_upload()` in order to upload multiple files. Some common patterns: - +`pb_upload` also accepts a vector of multiple files to upload: ```{r} library(magrittr) - ## upload a folder of data list.files("data") %>% pb_upload(repo = "cboettig/piggyback-tests", tag = "v0.0.1") @@ -387,8 +383,40 @@ list.files("data") %>% list.files(pattern = c("*.tsv.gz", "*.tif", "*.zip")) %>% pb_upload(repo = "cboettig/piggyback-tests", tag = "v0.0.1") ``` -Similarly, you can download all current data assets of the latest or specified -release by using `pb_download()` with no arguments. + +### Write R object directly to release + +`pb_write` wraps the above process, essentially allowing you to upload directly +to a release by providing an object, filename, and repo/tag: + +```{r} +pb_write(mtcars, "mtcars.rds", repo = "cboettig/piggyback-tests") +#> ℹ Uploading to latest release: "v0.0.2". +#> ℹ Uploading mtcars.rds ... +#> |===================================================| 100% +``` + +Similar to `pb_read`, `pb_write` has some pre-programmed `write_functions` for +the following file extensions: +- ".csv", ".csv.gz", ".csv.xz" are written with `utils::write.csv()` +- ".tsv", ".tsv.gz", ".tsv.xz" are written with `utils::write.csv(x, filename, sep = '\t')` +- ".rds" is written with `saveRDS()` +- ".json" is written with `jsonlite::write_json()` +- ".parquet" is written with `arrow::write_parquet()` +- ".txt" is written with `writeLines()` + +and you can pass custom functions with the `write_function` parameter: +```{r} +pb_write( + x = mtcars, + file = "mtcars.csv.gz", + repo = "cboettig/piggyback-tests", + write_function = data.table::fwrite +) +#> ℹ Uploading to latest release: "v0.0.2". +#> ℹ Uploading mtcars.csv.gz ... +#> |===================================================| 100% +``` ## Deleting Files @@ -422,17 +450,17 @@ To reduce GitHub API calls, piggyback caches `pb_releases` and `pb_list` with a timeout of 10 minutes by default. This avoids repeating identical requests to update its internal record of the repository data (releases, assets, timestamps, etc) during programmatic use. You can increase or decrease this delay by setting the -environment variable in seconds, e.g. `Sys.setenv("piggyback_cache_duration" = 10)` -for a longer delay or `Sys.setenv("piggyback_cache_duration" = 0)` to disable caching, +environment variable in seconds, e.g. `Sys.setenv("piggyback_cache_duration" = 3600)` +for a longer cache or `Sys.setenv("piggyback_cache_duration" = 0)` to disable caching, and then restarting R. ## Valid file names -GitHub assets attached to a release do not support file paths, and will convert -most special characters (`#`, `%`, etc) to `.` or throw an error (e.g. for file -names containing `$`, `@`, `/`). `piggyback` will default to using the base name of -the file only (i.e. will only use `"mtcars.csv"` if provided a file path like -`"data/mtcars.csv"`) +GitHub assets attached to a release do not support file paths, and will sometimes +convert most special characters (`#`, `%`, etc) to `.` or throw an error (e.g. +for file names containing `$`, `@`, `/`). `piggyback` will default to using the +`basename()` of the file only (i.e. will only use `"mtcars.csv"` if provided a +file path like `"data/mtcars.csv"`) ## A Note on GitHub Releases vs Data Archiving