Ubuntu commited on
Commit
f888423
1 Parent(s): 0b48c55
.gitattributes CHANGED
@@ -32,3 +32,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ data/item_to_item_similarity_dataframe_full.csv filter=lfs diff=lfs merge=lfs -text
36
+ data/ratings_filtered.rds filter=lfs diff=lfs merge=lfs -text
37
+ data/ref_corp_tfidf_new.rds filter=lfs diff=lfs merge=lfs -text
38
+ data/svdf.rds filter=lfs diff=lfs merge=lfs -text
39
+ data/dataset_goodreads_filtered.csv filter=lfs diff=lfs merge=lfs -text
Dockerfile CHANGED
@@ -1,17 +1,38 @@
1
- FROM rocker/shiny-verse:latest
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  WORKDIR /code
4
 
5
- # Install stable packages from CRAN
6
  RUN install2.r --error \
7
- ggExtra \
8
- shiny
 
 
 
 
 
 
 
 
9
 
10
- # Install development packages from GitHub
11
- RUN installGithub.r \
12
- rstudio/bslib \
13
- rstudio/httpuv
 
14
 
15
- COPY . .
16
 
17
- CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]
 
 
1
+ FROM rocker/shiny-verse:4.3.0
2
+
3
+ RUN apt-get update --fix-missing \
4
+ && apt-get install -y software-properties-common \
5
+ && rm -rf /var/lib/apt/lists/*
6
+ RUN add-apt-repository -y ppa:cran/poppler
7
+ RUN apt-get install -y libpoppler-cpp-dev
8
+
9
+
10
+ # Workaround for renv cache
11
+ RUN mkdir /.cache
12
+ RUN chmod 777 /.cache
13
 
14
  WORKDIR /code
15
 
16
+ # Install renv
17
  RUN install2.r --error \
18
+ renv
19
+
20
+
21
+ # Copy application code
22
+ COPY renv.lock .
23
+ COPY package.json .
24
+ COPY package-lock.json .
25
+
26
+ # Install dependencies
27
+ RUN Rscript -e 'options(renv.config.cache.enabled = FALSE); renv::restore(prompt = FALSE)'
28
 
29
+ COPY data/ ./data/
30
+ COPY app.R .
31
+ COPY config.yml .
32
+ COPY rhino.yml .
33
+ COPY app/ ./app/
34
 
35
+ RUN ls -lah ./data/
36
 
37
+ RUN mkdir -p ./app_cache/sass
38
+ CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]
README.md DELETED
@@ -1,10 +0,0 @@
1
- ---
2
- title: Shiny for R template
3
- emoji: 📚
4
- colorFrom: blue
5
- colorTo: yellow
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
app.R CHANGED
@@ -1,58 +1,2 @@
1
- library(shiny)
2
- library(bslib)
3
- library(dplyr)
4
- library(ggplot2)
5
-
6
- df <- readr::read_csv("penguins.csv")
7
- # Find subset of columns that are suitable for scatter plot
8
- df_num <- df |> select(where(is.numeric), -Year)
9
-
10
- ui <- page_sidebar(
11
- theme = bs_theme(bootswatch = "minty"),
12
- title = "Penguins explorer",
13
- sidebar = sidebar(
14
- varSelectInput("xvar", "X variable", df_num, selected = "Bill Length (mm)"),
15
- varSelectInput("yvar", "Y variable", df_num, selected = "Bill Depth (mm)"),
16
- checkboxGroupInput("species", "Filter by species",
17
- choices = unique(df$Species), selected = unique(df$Species)
18
- ),
19
- hr(), # Add a horizontal rule
20
- checkboxInput("by_species", "Show species", TRUE),
21
- checkboxInput("show_margins", "Show marginal plots", TRUE),
22
- checkboxInput("smooth", "Add smoother"),
23
- ),
24
- plotOutput("scatter")
25
- )
26
-
27
- server <- function(input, output, session) {
28
- subsetted <- reactive({
29
- req(input$species)
30
- df |> filter(Species %in% input$species)
31
- })
32
-
33
- output$scatter <- renderPlot(
34
- {
35
- p <- ggplot(subsetted(), aes(!!input$xvar, !!input$yvar)) +
36
- theme_light() +
37
- list(
38
- theme(legend.position = "bottom"),
39
- if (input$by_species) aes(color = Species),
40
- geom_point(),
41
- if (input$smooth) geom_smooth()
42
- )
43
-
44
- if (input$show_margins) {
45
- margin_type <- if (input$by_species) "density" else "histogram"
46
- p <- p |> ggExtra::ggMarginal(
47
- type = margin_type, margins = "both",
48
- size = 8, groupColour = input$by_species, groupFill = input$by_species
49
- )
50
- }
51
-
52
- p
53
- },
54
- res = 100
55
- )
56
- }
57
-
58
- shinyApp(ui, server)
 
1
+ # Rhino / shinyApp entrypoint. Do not edit.
2
+ rhino::app()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/js/BookCard.jsx ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const { useState } = React;
2
+ import Swal from 'sweetalert2'
3
+ import withReactContent from 'sweetalert2-react-content'
4
+ import { FaStar, FaGoodreads } from "react-icons/fa";
5
+ import { GenreTag } from './GenreTag';
6
+ import Heart from '@react-sandbox/heart'
7
+
8
+
9
+ const showDesc = (title, message) => {
10
+ withReactContent(
11
+ Swal.fire({
12
+ title: title,
13
+ text: message,
14
+ icon: "info",
15
+ width: '40rem',
16
+ grow: "fullscreen"
17
+ })
18
+ )
19
+ }
20
+
21
+ export default function BookCard({ title, author_name, avg_rating, genres, description, imageUrl, url, model }) {
22
+
23
+
24
+ const [active, setActive] = useState(false)
25
+ return (
26
+ <div className="book-card__container">
27
+ <div className="book-card__cover">
28
+ <img className="book-card__cover__image" src={imageUrl} alt={title} />
29
+ </div>
30
+
31
+ <div className="book-card__info-section">
32
+ <div className="book-card__info-section__genre-section">
33
+ {genres.map((genre) => (
34
+ <GenreTag genre={genre} />
35
+ ))}
36
+ </div>
37
+
38
+
39
+ <h3 className="book-card__info-section__title">{title}</h3>
40
+ <p className="book-card__info-section__author">{author_name}</p>
41
+ <div className="book-card__info-section__rating">
42
+ <FaStar className='book-card__info-section__rating-icon' />
43
+ <span className='book-card__info-section__rating-icon-rating'>{avg_rating}</span>
44
+
45
+ <a href={url} target="_blank" rel="noopener noreferrer">
46
+ <FaGoodreads className='book-card__info-section__rating-icon' />
47
+ </a>
48
+ </div>
49
+ <button
50
+ className="book-card__info-section__show-description-btn btn btn-sm"
51
+ onClick={() => showDesc(title, description)}
52
+ >
53
+ Show Description
54
+ </button>
55
+ <Heart
56
+ width={34}
57
+ height={34}
58
+ active={active}
59
+ onClick={() => {
60
+ Shiny.setInputValue("app-recommend_books-myval", {
61
+ title: title,
62
+ model: model,
63
+ genres: genres
64
+ })
65
+ console.log()
66
+ setActive(!active)}
67
+ }
68
+ />
69
+ </div>
70
+ </div>
71
+ );
72
+ }
app/js/GenreTag.jsx ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ function getClassName(genre) {
4
+ const classMap = {
5
+ "children": "children-color",
6
+ "fantasy": "fantasy-color",
7
+ "history_biography": "history_biography-color",
8
+ "graphic_comics": "comics-color",
9
+ "romance": "romance-color",
10
+ "poetry": "poetry-color",
11
+ "ya": "YA-color",
12
+ "crime": "crime-color"
13
+ };
14
+ return classMap[genre.toLowerCase().trim()] || "default_color"; // Use toLowerCase for case-insensitivity
15
+ }
16
+
17
+
18
+ export const GenreTag = (props) => {
19
+ return (
20
+ <div className={getClassName(props.genre) + " book-card__info-section__genre-section-container" + " flex-center"}>
21
+ <span className='book-card__info-section__genre-section-conteiner-text'>#{props.genre}</span>
22
+ </div>
23
+ )
24
+ }
app/js/index.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ import BookCard from './BookCard';
2
+
3
+
4
+ Rhino.registerReactComponents({ BookCard })
app/logic/SVD_model.R ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ recommenderlab[predict],
3
+ methods[as],
4
+ dplyr[select]
5
+ )
6
+
7
+
8
+ SVD_predict <- function(books_tab, selected_ids, ratings_tab, SVD_model, select_user_mat, how_many) {
9
+ found_ids <- selected_ids[selected_ids %in% colnames(ratings_tab)]
10
+ if (length(found_ids) == 0) {
11
+ return(NULL)
12
+ }
13
+ ratings_line <- ratings_tab[1,]
14
+ ratings_line[] <- NA
15
+ ratings_line[found_ids] <- 5
16
+
17
+ select_user_mat <- as.matrix(ratings_line)
18
+ select_user_mat <- as(select_user_mat, 'realRatingMatrix')
19
+
20
+ predict_SVDF <- predict(SVD_model,
21
+ select_user_mat,
22
+ type = "topNList",
23
+ n = how_many
24
+ )
25
+
26
+
27
+ predict_SVDF_list <- as(predict_SVDF, 'list')
28
+ predict_SVDF_list <- lapply(predict_SVDF_list, as.numeric)
29
+ predict_SVDF_df <- as.data.frame(predict_SVDF_list)
30
+ names(predict_SVDF_df) <- "book_id"
31
+
32
+ recommendations_SVDF <- merge(predict_SVDF_df, books_tab, by = "book_id")
33
+ recommendations_tab <- recommendations_SVDF |> select(
34
+ title, average_rating, description, url, image_url, genres, author_name
35
+ )
36
+ recommendations_tab$model <- "SVD"
37
+ return(recommendations_tab)
38
+
39
+ }
app/logic/__init__.R ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ # Logic: application code independent from Shiny.
2
+ # https://go.appsilon.com/rhino-project-structure
app/logic/item_item_model.R ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ dplyr[filter]
3
+ )
4
+
5
+ box::use(
6
+ app/logic/utils[split_number, parse_recommendations]
7
+ )
8
+
9
+ #' @export
10
+ get_item_item_recommendations <- function(item_item_df, data_tab, ids, how_many) {
11
+ rows <- item_item_df |> filter(
12
+ book_id %in% ids
13
+ )
14
+
15
+ distribution <- split_number(how_many, length(ids))
16
+
17
+ result <- list()
18
+ for (i in 1:length(distribution)) {
19
+ result <- append(result, rows[i,which(colnames(item_item_df) == "X1"):distribution[i]] |> as.vector())
20
+ }
21
+
22
+ result <- result |> unlist()
23
+ return(parse_recommendations(result, data_tab, "ITEM-ITEM"))
24
+ }
25
+
26
+
app/logic/recommend_system.R ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ quanteda[corpus, docnames, dfm, convert, dfm_tfidf, dfm_subset],
3
+ quanteda.textstats[textstat_simil],
4
+ utils[head],
5
+ spacyr[spacy_parse],
6
+ dplyr[mutate, filter, select],
7
+ )
8
+
9
+
10
+
11
+ create_ref_corpus <- function(data_tab) {
12
+ corp <- corpus(data_tab, text_field = "description")
13
+ docnames(corp) <- data_tab$title
14
+ return(corp)
15
+ }
16
+
17
+
18
+ spacy_pipeline <- function(corp) {
19
+ res <- corp |> spacy_parse()
20
+ res_tokens <- res |>
21
+ filter(
22
+ ! pos %in% c("PUNCT", "PART", "NUM", "SYM")
23
+ ) |>
24
+ mutate(
25
+ lemma = tolower(lemma)
26
+ ) |>
27
+ as.tokens(
28
+ use_lemma = TRUE
29
+ ) |>
30
+ tokens_remove(stopwords("en"))
31
+
32
+ corp_dfm <- res_tokens |> dfm()
33
+
34
+ saveRDS(corp_dfm, "./data/ref_corp_dfm.rds")
35
+
36
+
37
+ corp_tfidf <- corp_dfm |> dfm_tfidf()
38
+
39
+ saveRDS(corp_tfidf, "./data/ref_corp_tfidf.rds")
40
+ }
41
+
42
+ #' export
43
+ get_recommendations <- function(corp_dfm, query_book_titles, simil_method = "ejaccard", how_many) {
44
+ query_dfm <- dfm_subset(corp_dfm, docname_ %in% query_book_titles)
45
+
46
+ tstat <- textstat_simil(
47
+ query_dfm, corp_dfm,
48
+ margin = "documents",
49
+ method = simil_method
50
+ )
51
+
52
+ stat_list <- as.list(tstat)
53
+ ordered <- sort(unlist(stat_list), decreasing = TRUE)
54
+ top_n <- head(ordered, n = how_many)
55
+ names(top_n) <- names(top_n) |> gsub(pattern = "\\..*$", replacement = "")
56
+ return(names(top_n))
57
+ }
58
+
59
+ #' export
60
+ parse_recommendations <- function(rec_book_names, data_tab) {
61
+ subset_books <- data_tab |>
62
+ filter(
63
+ title %in% rec_book_names
64
+ ) |>
65
+ select(
66
+ title, average_rating, description, url, image_url, genres, author_name
67
+ )
68
+ return(subset_books)
69
+ }
70
+
71
+ # hp3 <- dfm_subset(corp_dfm, docname_ %in% "A Game of Thrones (A Song of Ice and Fire, #1)")
72
+ # tstat <- textstat_simil(hp3, corp_dfm,
73
+ # margin = "documents", method = "ejaccard")
74
+ # stat_list <- as.list(tstat)
75
+ # ordered <- sort(unlist(stat_list), decreasing = TRUE)
76
+ # top_ten <- head(ordered, n = 10)
77
+ # names(top_ten) <- names(top_ten) |> gsub(pattern = "\\..*$", replacement = "")
78
+ # top_ten
app/logic/tfidf_model.R ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ quanteda[corpus, docvars, docnames, dfm, convert, dfm_tfidf, dfm_subset],
3
+ quanteda.textstats[textstat_simil],
4
+ utils[head],
5
+ spacyr[spacy_parse],
6
+ dplyr[mutate, filter, select],
7
+ data.table[setorderv],
8
+ )
9
+
10
+ box::use(
11
+ app/logic/utils[parse_recommendations]
12
+ )
13
+
14
+
15
+ create_ref_corpus <- function(data_tab, field) {
16
+ corp <- corpus(data_tab, text_field = field)
17
+ docnames(corp) <- data_tab$book_id
18
+ return(corp)
19
+ }
20
+
21
+
22
+ spacy_pipeline <- function(corp) {
23
+ browser()
24
+ res <- corp |> spacy_parse(nounphrase = TRUE)
25
+ res_tokens <- res |>
26
+ filter(
27
+ ! pos %in% c("PUNCT", "PART", "NUM", "SYM"),
28
+ ! entity %in% c("PERSON_B", "PERSON_I")
29
+ ) |>
30
+ mutate(
31
+ lemma = tolower(lemma)
32
+ )
33
+
34
+ all <- res_tokens |>
35
+ group_by(sentence_id, nounphrase) |>
36
+ mutate(nounphrase_id = cumsum(nounphrase %in% c("beg_root", ""))) |>
37
+ group_by(sentence_id, nounphrase_id) |>
38
+ mutate(has_entity = ifelse(entity!= "", 1, 0)) |>
39
+ as.data.table()
40
+
41
+
42
+ phrases <- all |>
43
+ filter(nounphrase_id == 0, has_entity == 1)
44
+
45
+ non_phrases <- fsetdiff(all, phrases)
46
+
47
+ phrases <- phrases |>
48
+ mutate(nounphrase_id = cumsum(nounphrase == "beg"), seq_id = -1)
49
+
50
+ phrases[1, ]$seq_id <- 0
51
+
52
+ phrases$seq_id <- cumsum(c(TRUE, phrases$sentence_id[-1]!= phrases$sentence_id[-nrow(phrases)] |
53
+ phrases$token_id[-1]!= phrases$token_id[-nrow(phrases)] + 1))
54
+
55
+ phrases_concat <- phrases[,c("token", "lemma", "pos", "entity") :=
56
+ .(paste(token, collapse = " "),
57
+ paste(lemma, collapse = " "),
58
+ paste(pos, collapse = " "),
59
+ paste(entity, collapse = " ")),
60
+ by =.(nounphrase_id, sentence_id, seq_id)]
61
+
62
+ phrases_concat <- unique(phrases_concat, by = c("sentence_id", "nounphrase_id", "token", "seq_id"))
63
+ non_phrases[, c("nounphrase_id", "has_entity") := NULL]
64
+ phrases_concat[, c("nounphrase_id", "has_entity", "seq_id") := NULL]
65
+
66
+ joined <- rbindlist(list(non_phrases, phrases_concat))
67
+ setorder(joined, doc_id, sentence_id, token_id)
68
+
69
+ class(joined) <- c("spacyr_parsed", class(joined))
70
+ res_tokens <- joined |> as.tokens(
71
+ use_lemma = TRUE
72
+ )
73
+
74
+ corp_dfm <- res_tokens |> dfm()
75
+ docvars(corp_dfm) <- docvars(corp)
76
+
77
+ saveRDS(corp_dfm, "./data/ref_corp_dfm_new.rds")
78
+
79
+
80
+ corp_tfidf <- corp_dfm |> dfm_tfidf()
81
+
82
+ saveRDS(corp_tfidf, "./data/ref_corp_tfidf_new.rds")
83
+ }
84
+
85
+ #' export
86
+ get_recommendations <- function(corp_dfm, data_tab, query_book_ids, genres, simil_method = "cosine", how_many) {
87
+ query_dfm <- dfm_subset(corp_dfm, docname_ %in% query_book_ids)
88
+ if (!is.null(genres)) {
89
+ corp_dfm <- corp_dfm[grep(genres, paste(docvars(corp_dfm)$genres)),]
90
+ }
91
+ rest_dfm <- dfm_subset(corp_dfm, !docname_ %in% query_book_ids)
92
+
93
+
94
+ tstat <- textstat_simil(
95
+ query_dfm, rest_dfm,
96
+ margin = "documents",
97
+ method = simil_method
98
+ ) |>
99
+ as.data.frame()
100
+ setorderv(tstat, cols = c(simil_method), order = -1)
101
+ recommendations <- parse_recommendations(tstat[1:how_many,]$document2, data_tab, "TFIDF")
102
+ return(recommendations)
103
+ }
104
+
105
+
106
+
107
+
app/logic/utils.R ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ dplyr[select, filter]
3
+ )
4
+
5
+ #' @export
6
+ split_number <- function(number, n){
7
+ # Calculate the base value for each part (integer division)
8
+ base_part = number %/% n
9
+
10
+ # Initialize the result list
11
+ result = rep(base_part, n)
12
+
13
+ # Distribute the remainder among the first n-1 elements
14
+ remainder = number %% n
15
+ i <- 1
16
+ for(one in rep(1, remainder)) {
17
+ result[[i]] <- result[[i]] + one
18
+ i <- i + 1
19
+ }
20
+
21
+ return(result)
22
+ }
23
+
24
+
25
+ #' @export
26
+ get_random_titles <- function(books_tab, how_many) {
27
+ rows <- sample(1:nrow(books_tab), how_many)
28
+ selected <- books_tab[rows,]
29
+ selected <- selected |> select(
30
+ title, average_rating, description, url, image_url, genres, author_name
31
+ )
32
+ selected$model <- "random"
33
+ return(selected)
34
+ }
35
+
36
+ #' @export
37
+ parse_recommendations <- function(rec_book_ids, data_tab, model) {
38
+ subset_books <- data_tab |>
39
+ filter(
40
+ book_id %in% rec_book_ids
41
+ ) |>
42
+ select(
43
+ title, average_rating, description, url, image_url, genres, author_name
44
+ )
45
+ subset_books$model <- model
46
+ return(subset_books)
47
+ }
app/main.R ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ utils[head, read.csv2],
3
+ shiny[div, moduleServer, downloadLink, downloadHandler, sliderInput, tagList, req, reactiveVal, actionButton, fileInput, observeEvent, h1, h3, p, NS, selectizeInput, HTML, tags],
4
+ bslib[page_fillable, page_sidebar, nav_panel, page_navbar, layout_columns, card, card_header, card_body, layout_column_wrap, value_box, input_dark_mode, nav_item],
5
+ shinyWidgets[pickerInput],
6
+ waiter[useWaiter, autoWaiter, waiter_show, spin_fading_circles, waiter_hide, waiterShowOnLoad, waiter_on_busy],
7
+ spacyr[spacy_install],
8
+ data.table[fread, fwrite],
9
+ )
10
+
11
+ box::use(
12
+ view / mod_search_books,
13
+ view / mod_recommend_books,
14
+ view / mod_data_analysis
15
+ )
16
+
17
+
18
+ #' @export
19
+ ui <- function(id) {
20
+ ns <- NS(id)
21
+ page_navbar(
22
+ title = "Book Recommender",
23
+ sidebar = my_sidebar(ns),
24
+ fillable = FALSE,
25
+ nav_panel(
26
+ useWaiter(),
27
+ waiter_on_busy(html = tagList(div(class = "main-waiter", h3("Give me a second to read all those books..."), spin_fading_circles()))),
28
+ # waiterShowOnLoad(html = tagList(div(class = "main-waiter", h3("Give me a second to read all those books..."), spin_fading_circles()))),
29
+ title = "Recommendations",
30
+ tags$main(
31
+ class = "main-container",
32
+ tags$section(
33
+ h1("Discover books you will love!", class = "align-text-center"),
34
+ div(class = "text-main align-text-center", p(" Enter books you like and the site will analyse the contents of the books to provide book recommendations and suggestions for what to read next.")),
35
+ mod_search_books$ui(ns("search_books")),
36
+ mod_recommend_books$ui(ns("recommend_books"))
37
+ )
38
+ )
39
+ ),
40
+ nav_panel(
41
+ "Data analysis",
42
+ mod_data_analysis$ui(ns("data_analysis"))
43
+ ),
44
+ # nav_item(
45
+ # fileInput(ns("upload_goodreads"), NULL, buttonLabel = "Upload goodreads", multiple = FALSE)
46
+ # ),
47
+ )
48
+ }
49
+
50
+ #' @export
51
+ server <- function(id) {
52
+ moduleServer(id, function(input, output, session) {
53
+ gargoyle::init("start_recommend_event")
54
+
55
+ # LOAD DATA ---------------------------------------------------------------
56
+
57
+ data <- load_data("data/dataset_goodreads_filtered.csv")
58
+ item_item_df <- fread("data/item_to_item_similarity_dataframe_full.csv")
59
+ user_ratings_tab <- readRDS("data/ratings_filtered.rds")
60
+ corp_dfm <- readRDS("data/ref_corp_tfidf_new.rds")
61
+ SVD_model <- readRDS("data/svdf.rds")
62
+ # spacy_install()
63
+
64
+ selected_books_ids <- mod_search_books$server("search_books", data$title, data$image_url, data$book_id)
65
+ mod_data_analysis$server("data_analysis")
66
+
67
+ output$downloadData <- downloadHandler(
68
+ filename = function() {
69
+ "system_recommendations_log.csv"
70
+ },
71
+ content = function(file) {
72
+ data <- fread("system_recommendations_log.csv")
73
+ fwrite(data, file)
74
+ }
75
+ )
76
+
77
+ observeEvent(input$method, {
78
+ mod_recommend_books$server(
79
+ "recommend_books",
80
+ user_ratings_tab,
81
+ SVD_model,
82
+ corp_dfm,
83
+ item_item_df,
84
+ selected_books_ids,
85
+ data,
86
+ input$how_many_recommends_slider,
87
+ input$simil_metrics,
88
+ input$method
89
+ )
90
+ })
91
+
92
+ observeEvent(input$how_many_recommends_slider, {
93
+ mod_recommend_books$server(
94
+ "recommend_books",
95
+ user_ratings_tab,
96
+ SVD_model,
97
+ corp_dfm,
98
+ item_item_df,
99
+ selected_books_ids,
100
+ data,
101
+ input$how_many_recommends_slider,
102
+ input$simil_metrics,
103
+ input$method
104
+ )
105
+ gargoyle::trigger("start_recommend_event")
106
+ })
107
+ })
108
+ }
109
+
110
+
111
+ load_data <- function(path) {
112
+ data <- data.table::fread(path)
113
+ data[, genres := strsplit(genre, split = ",")]
114
+ data[, average_rating := as.numeric(average_rating)]
115
+ data$genre <- NULL
116
+ data$similar_books <- NULL
117
+ return(data)
118
+ }
119
+
120
+
121
+ my_sidebar <- function(ns) {
122
+ tagList(
123
+ sliderInput(ns("how_many_recommends_slider"), "Number of books to recommend", 1, 100, 10, step = 1),
124
+ pickerInput(
125
+ inputId = ns("method"),
126
+ label = "recommendation method",
127
+ selected = "ALL",
128
+ choices = c("SVD", "TFIDF", "item-item", "ALL")
129
+ ),
130
+ downloadLink(ns("downloadData"), "Download logs")
131
+ )
132
+ }
app/static/css/app.min.css ADDED
@@ -0,0 +1 @@
 
 
1
+ *{box-sizing:border-box}.value-box-showcase{overflow:hidden}.vscomp-option{height:100px !important}.booksearch__img{margin-right:.4rem;height:45px;width:30px}.booksearch__title{margin-left:.4rem;font-size:1rem;font-weight:600}.align-text-center{text-align:center}.text-main{font-size:1.2rem;font-weight:500;margin:1.2rem}.select_books_input_container{display:flex;justify-content:center;align-items:center}.select_books_input_container>div.form-group{width:75vw}.vscomp-options-container{max-height:420px !important}.flex-center{display:flex;flex-direction:column;justify-content:center;align-items:center}.main{height:95vh;margin:0;padding:3rem 0 1rem 0}.main-container{display:flex;flex-direction:column;justify-content:center;align-items:center}.main-waiter{display:flex;flex-direction:column;justify-content:space-between;align-items:center}#app-recommend_books-bookCardsOutput{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap;margin-top:2rem;width:80vw}.book-card__container{display:flex;justify-content:center;align-items:center;margin:1rem;flex-direction:column;width:300px;margin-bottom:1rem;-webkit-box-shadow:10px 10px 22px 4px rgba(0,0,0,.75);-moz-box-shadow:10px 10px 22px 4px rgba(0,0,0,.75);box-shadow:10px 10px 22px 4px rgba(0,0,0,.75)}.book-card__cover{display:flex;justify-content:center;align-items:center;flex-direction:column;height:200px;width:300px;background-color:#fffaf0}.book-card__cover__image{height:180;width:92;-webkit-box-shadow:10px 10px 22px 4px rgba(0,0,0,.75);-moz-box-shadow:10px 10px 22px 4px rgba(0,0,0,.75);box-shadow:10px 10px 22px 4px rgba(0,0,0,.75)}.book-card__info-section{display:flex;justify-content:center;align-items:center;flex-direction:column}.book-card__info-section__genre-section{display:flex;justify-content:space-evenly;align-items:center;flex-direction:row;margin-top:.5rem;margin-bottom:.5rem}.book-card__info-section__genre-section-container{color:#fff;text-align:center;margin-left:.25rem;margin-right:.25rem;border-radius:5px}.book-card__info-section__genre-section-conteiner-text{font-style:italic;font-size:.7rem;padding:5px;font-weight:600}.book-card__info-section__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-weight:600;font-size:1.2rem;height:3rem;color:#700202;text-align:center;margin-left:.3rem;margin-right:.3rem}.book-card__info-section__show-description-btn{background-color:#700202;color:#fff;margin-bottom:.6rem}.children-color{background-color:#4169e1}.fantasy-color{background-color:#b59410}.history_biography-color{background-color:#228b22}.comics-color{background-color:#000}.romance-color{background-color:maroon}.poetry-color{background-color:#003049}.YA-color{background-color:#f0f}.crime-color{background-color:navy}.book-card__info-section__rating-icon{height:1.5rem;width:1.5rem;color:#000;margin-bottom:5px}.book-card__info-section__rating-icon-rating{font-weight:550;font-size:1.1rem;margin-right:1rem;margin-left:.4rem}.book-card__info-section__author{color:#3d445e;font-weight:500;font-size:1.1rem}.img-card{max-width:450px !important}.img-gallery{display:grid;grid-template-columns:1fr 1fr 1fr}label.checkbtn{display:inline-flex;align-items:center;justify-content:center}.btn-group{flex-direction:column}@media(min-width: 960px){.btn-group{flex-direction:row}}
app/static/favicon.ico ADDED
app/static/js/app.min.js ADDED
The diff for this file is too large to render. See raw diff
 
app/static/js/app.min.js.LICENSE.txt ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * sweetalert2 v11.10.6
3
+ * Released under the MIT License.
4
+ */
5
+
6
+ /**
7
+ * @license React
8
+ * react-dom.production.min.js
9
+ *
10
+ * Copyright (c) Facebook, Inc. and its affiliates.
11
+ *
12
+ * This source code is licensed under the MIT license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
15
+
16
+ /**
17
+ * @license React
18
+ * react.production.min.js
19
+ *
20
+ * Copyright (c) Facebook, Inc. and its affiliates.
21
+ *
22
+ * This source code is licensed under the MIT license found in the
23
+ * LICENSE file in the root directory of this source tree.
24
+ */
25
+
26
+ /**
27
+ * @license React
28
+ * scheduler.production.min.js
29
+ *
30
+ * Copyright (c) Facebook, Inc. and its affiliates.
31
+ *
32
+ * This source code is licensed under the MIT license found in the
33
+ * LICENSE file in the root directory of this source tree.
34
+ */
app/styles/main.scss ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ .value-box-showcase {
6
+ overflow: hidden;
7
+ }
8
+
9
+ .vscomp-option {
10
+ height: 100px !important;
11
+ }
12
+
13
+
14
+
15
+ .booksearch__img {
16
+ margin-right: 0.4rem;
17
+ height: 45px;
18
+ width: 30px;
19
+ }
20
+
21
+ .booksearch__title {
22
+ margin-left: 0.4rem;
23
+ font-size: 1rem;
24
+ font-weight: 600;
25
+ }
26
+
27
+
28
+ .align-text-center {
29
+ text-align: center;
30
+ }
31
+
32
+ .text-main {
33
+ font-size: 1.2rem;
34
+ font-weight: 500;
35
+ margin: 1.2rem;
36
+ }
37
+
38
+
39
+ .select_books_input_container {
40
+ display: flex;
41
+ justify-content: center;
42
+ align-items: center;
43
+
44
+ }
45
+
46
+ .select_books_input_container > div.form-group {
47
+ width: 75vw;
48
+ }
49
+
50
+ .vscomp-options-container {
51
+ max-height: 420px !important;
52
+ }
53
+
54
+
55
+ .flex-center {
56
+ display: flex;
57
+ flex-direction: column;
58
+ justify-content: center;
59
+ align-items: center;
60
+ }
61
+
62
+ .main {
63
+ height: 95vh;
64
+ margin: 0;
65
+ padding: 3rem 0 1rem 0;
66
+ }
67
+
68
+ .main-container {
69
+ display: flex;
70
+ flex-direction: column;
71
+ justify-content: center;
72
+ align-items: center;
73
+ }
74
+
75
+ .main-waiter {
76
+ display: flex;
77
+ flex-direction: column;
78
+ justify-content: space-between;
79
+ align-items: center;
80
+ }
81
+
82
+
83
+ #app-recommend_books-bookCardsOutput {
84
+ display: flex;
85
+ justify-content: space-evenly;
86
+ align-items: center;
87
+ flex-wrap: wrap;
88
+ margin-top: 2rem;
89
+ width: 80vw;
90
+
91
+ }
92
+
93
+ .book-card__container {
94
+ display: flex;
95
+ justify-content: center;
96
+ align-items: center;
97
+ margin: 1rem;
98
+ flex-direction: column;
99
+ width: 300px;
100
+ margin-bottom: 1rem;
101
+ -webkit-box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
102
+ -moz-box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
103
+ box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
104
+ }
105
+
106
+
107
+ .book-card__cover {
108
+ display: flex;
109
+ justify-content: center;
110
+ align-items: center;
111
+ flex-direction: column;
112
+ height: 200px;
113
+ width: 300px;
114
+ background-color: floralwhite;
115
+ }
116
+
117
+
118
+ .book-card__cover__image {
119
+ height: 180;
120
+ width: 92;
121
+ -webkit-box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
122
+ -moz-box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
123
+ box-shadow: 10px 10px 22px 4px rgba(0, 0, 0, 0.75);
124
+ }
125
+
126
+ .book-card__info-section {
127
+ display: flex;
128
+ justify-content: center;
129
+ align-items: center;
130
+ flex-direction: column;
131
+ }
132
+
133
+ .book-card__info-section__genre-section {
134
+ display: flex;
135
+ justify-content: space-evenly;
136
+ align-items: center;
137
+ flex-direction: row;
138
+ margin-top: 0.5rem;
139
+ margin-bottom: 0.5rem;
140
+
141
+ }
142
+
143
+ .book-card__info-section__genre-section-container {
144
+ color: white;
145
+ text-align: center;
146
+ margin-left: 0.25rem;
147
+ margin-right: 0.25rem;
148
+ border-radius: 5px;
149
+ }
150
+
151
+ .book-card__info-section__genre-section-conteiner-text {
152
+ font-style: italic;
153
+ font-size: 0.7rem;
154
+ padding: 5px;
155
+ font-weight: 600;
156
+ }
157
+
158
+ .book-card__info-section__title {
159
+ display: -webkit-box;
160
+ -webkit-line-clamp: 2;
161
+ -webkit-box-orient: vertical;
162
+ overflow: hidden;
163
+ font-weight: 600;
164
+ font-size: 1.2rem;
165
+ height: 3rem;
166
+ color: #700202;
167
+ text-align: center;
168
+ margin-left: 0.3rem;
169
+ margin-right: 0.3rem;
170
+ }
171
+
172
+
173
+ .book-card__info-section__show-description-btn {
174
+ background-color: #700202;
175
+ color: white;
176
+ margin-bottom: 0.6rem;
177
+ }
178
+
179
+ .children-color {
180
+ background-color: #4169E1;
181
+ }
182
+
183
+ .fantasy-color {
184
+ background-color: #B59410;
185
+ }
186
+
187
+
188
+ .history_biography-color {
189
+ background-color: #228B22;
190
+ }
191
+
192
+ .comics-color {
193
+ background-color: black;
194
+ }
195
+
196
+ .romance-color {
197
+ background-color: #800000;
198
+ }
199
+
200
+ .poetry-color {
201
+ background-color: #003049;
202
+ }
203
+
204
+ .YA-color {
205
+ background-color: #FF00FF;
206
+ }
207
+
208
+ .crime-color {
209
+ background-color: navy;
210
+ }
211
+
212
+ .book-card__info-section__rating-icon {
213
+ height: 1.5rem;
214
+ width: 1.5rem;
215
+ color: black;
216
+ margin-bottom: 5px;
217
+ }
218
+
219
+ .book-card__info-section__rating-icon-rating {
220
+ font-weight: 550;
221
+ font-size: 1.1rem;
222
+ margin-right: 1rem;
223
+ margin-left: 0.4rem;
224
+ }
225
+
226
+
227
+ .book-card__info-section__author {
228
+ color: #3D445E;
229
+ font-weight: 500;
230
+ font-size: 1.1rem;
231
+ }
232
+
233
+
234
+ .img-card {
235
+ max-width: 450px !important;
236
+ }
237
+
238
+ .img-gallery {
239
+ display: grid;
240
+ grid-template-columns: 1fr 1fr 1fr;
241
+ }
242
+
243
+
244
+ label.checkbtn {
245
+ display: inline-flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ }
249
+
250
+
251
+ .btn-group {
252
+ flex-direction: column;
253
+ }
254
+
255
+ @media (min-width: 960px) {
256
+ .btn-group {
257
+ flex-direction: row;
258
+ }
259
+ }
app/view/__init__.R ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ # View: Shiny modules and related code.
2
+ # https://go.appsilon.com/rhino-project-structure
app/view/mod_data_analysis.R ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ shiny[moduleServer, fluidRow, NS, uiOutput, div, renderImage, renderUI],
3
+ bslib[layout_column_wrap, value_box, card, card_header, card_body, layout_columns],
4
+ bsicons[bs_icon],
5
+ purrr[map],
6
+ grDevices[replayPlot]
7
+ )
8
+
9
+ #' @export
10
+ ui <- function(id) {
11
+ ns <- NS(id)
12
+ div(
13
+ layout_column_wrap(
14
+ value_box(
15
+ title = "Number of books",
16
+ value = "15591",
17
+ showcase = bs_icon("book-half"),
18
+ theme = "purple"
19
+ ),
20
+ value_box(
21
+ title = "Average book rating",
22
+ value = "4.03",
23
+ showcase = bs_icon("star-fill"),
24
+ theme = "purple"
25
+ ),
26
+ value_box(
27
+ title = "Number of genres",
28
+ value = "8",
29
+ showcase = bs_icon("tags-fill"),
30
+ theme = "purple"
31
+ )
32
+ ),
33
+ uiOutput(ns("wordcloud_plots"))
34
+
35
+ )
36
+
37
+ }
38
+
39
+ #' @export
40
+ server <- function(id) {
41
+ moduleServer(id, function(input, output, session) {
42
+ images <- list.files("data/plots", full.names = TRUE)
43
+ output$wordcloud_plots <- renderUI({
44
+ div(
45
+ class = "img-gallery",
46
+ map(.x = images, .f = create_plot_card)
47
+ )
48
+ })
49
+ })
50
+ }
51
+
52
+ create_plot_card <- function(plot_img_path) {
53
+
54
+ name <- strsplit(plot_img_path, "/")[[1]][3] |> gsub(pattern = ".png*", replacement = "")
55
+ card(
56
+ class = "img-card",
57
+ card_header(name),
58
+ card_body(
59
+ renderImage({
60
+ list(src = plot_img_path, height = "400px")
61
+ })
62
+ )
63
+ )
64
+ }
app/view/mod_recommend_books.R ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ shiny[
3
+ moduleServer,
4
+ textOutput,
5
+ renderText,
6
+ NS,
7
+ tags,
8
+ req,
9
+ div,
10
+ actionButton,
11
+ reactiveVal,
12
+ tagList,
13
+ observeEvent,
14
+ uiOutput,
15
+ renderUI
16
+ ],
17
+ dplyr[select],
18
+ methods[as],
19
+ shinyWidgets[checkboxGroupButtons],
20
+ purrr[pmap],
21
+ data.table[data.table, fwrite]
22
+
23
+ )
24
+
25
+ box::use(
26
+ app/logic/tfidf_model[get_recommendations],
27
+ app/logic/SVD_model[SVD_predict],
28
+ app/logic/item_item_model[get_item_item_recommendations],
29
+ app/logic/utils[split_number, get_random_titles],
30
+ app/view/react[BookCard],
31
+ )
32
+
33
+ #' @export
34
+ ui <- function(id) {
35
+ ns <- NS(id)
36
+ div(
37
+ class = "flex-center",
38
+ checkboxGroupButtons(
39
+ inputId = ns("genre_selector"),
40
+ label = "Choose genres to be included:",
41
+ choices = c(`<div class=''>fantasy</div>` = "fantasy",
42
+ `<span class=''>children</span>` = "children",
43
+ `<span class=''>history & biography</span>` = "history_biography",
44
+ `<span class=''>comics</span>` = "comics",
45
+ `<span class=''>romance</span>` = "romance",
46
+ `<span class=''>poetry</span>` = "poetry",
47
+ `<span class=''>YA</span>` = "YA",
48
+ `<span class=''>crime</span>` = "crime"
49
+ ),
50
+ justified = TRUE,
51
+ ),
52
+ textOutput(ns("mytext1")),
53
+
54
+
55
+ actionButton(ns("get_recommend_btn"), "Get Recommendations"),
56
+ uiOutput(ns("bookCardsOutput"))
57
+
58
+
59
+ )
60
+ }
61
+
62
+ #' @export
63
+ server <- function(id, ratings_tab, SVD_model, corp_dfm, item_item_df, query_book_ids, data_tab, how_many, simil_metrics, method = "SVD") {
64
+ moduleServer(id, function(input, output, session) {
65
+ book_recommends_tab <- reactiveVal()
66
+
67
+ observeEvent(input$get_recommend_btn, {
68
+ gargoyle::trigger("start_recommend_event")
69
+ })
70
+
71
+ observeEvent(gargoyle::watch("start_recommend_event"), {
72
+ req(query_book_ids())
73
+ if (method == "SVD") {
74
+ recommendations <- SVD_predict(data_tab, query_book_ids(), ratings_tab, SVD_model, select_user_mat, how_many = how_many)
75
+ book_recommends_tab(recommendations)
76
+ }
77
+ else if (method == "TFIDF") {
78
+ recommendations <- get_recommendations(corp_dfm, data_tab, query_book_ids(), input$genre_selector, "cosine", how_many)
79
+ book_recommends_tab(recommendations)
80
+ }
81
+ else if (method == "item-item") {
82
+ recommendations <- get_item_item_recommendations(item_item_df, data_tab, query_book_ids(), how_many)
83
+ book_recommends_tab(recommendations)
84
+ }
85
+ else {
86
+ parts <- split_number(how_many, 3)
87
+
88
+ SVD_recommends <- SVD_predict(data_tab, query_book_ids(), ratings_tab, SVD_model, select_user_mat, how_many = parts[1])
89
+ tfidf_recommends <- get_recommendations(corp_dfm, data_tab, query_book_ids(), input$genre_selector, "cosine", parts[2])
90
+ item_item_recommendations <- get_item_item_recommendations(item_item_df, data_tab, query_book_ids(), how_many)
91
+ #random <- get_random_titles(data_tab, parts[3])
92
+
93
+ all_recs <- rbind(SVD_recommends, tfidf_recommends, item_item_recommendations)
94
+ all_recs <- all_recs[sample(1:nrow(all_recs)), ]
95
+ book_recommends_tab(all_recs)
96
+
97
+ }
98
+ })
99
+
100
+ observeEvent(input$myval, {
101
+ req(input$myval)
102
+ record <- input$myval
103
+ record_row <- data.table(
104
+ query_book_id = query_book_ids(),
105
+ recommended_title = record$title,
106
+ model = record$model,
107
+ datetime = date()
108
+ )
109
+ fwrite(record_row, "system_recommendations_log.csv", append = TRUE)
110
+
111
+ })
112
+
113
+ output$bookCardsOutput <- renderUI({
114
+ req(book_recommends_tab())
115
+ pmap(.l = book_recommends_tab(), .f = create_card)
116
+ })
117
+ })
118
+ }
119
+
120
+ create_card <- function(title, average_rating, description, url, image_url, genres, author_name, model) {
121
+ BookCard(title = title,
122
+ avg_rating = average_rating,
123
+ genres = as.list(genres),
124
+ description = description,
125
+ author_name = author_name,
126
+ imageUrl = image_url,
127
+ url = url,
128
+ model = model
129
+
130
+ )
131
+ }
app/view/mod_search_books.R ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ box::use(
2
+ shiny[moduleServer, observeEvent, reactive, NS, div, uiOutput, renderUI],
3
+ bslib[card, card_header, card_body],
4
+ shinyWidgets[virtualSelectInput],
5
+ )
6
+
7
+ #' @export
8
+ ui <- function(id) {
9
+ ns <- NS(id)
10
+ uiOutput(ns("select_books_ui_output"))
11
+ }
12
+
13
+ #' @export
14
+ server <- function(id, book_titles, book_url_images, book_ids) {
15
+ moduleServer(id, function(input, output, session) {
16
+ ns <- session$ns
17
+
18
+
19
+ output$select_books_ui_output <- renderUI({
20
+ res <- div(
21
+ class = "select_books_input_container",
22
+ virtualSelectInput(
23
+ ns("select_books_input"),
24
+ "",
25
+ choices = list(label=sprintf("<div class=\"booksearch\" >
26
+ <img class=\"booksearch__img\" src=\"%s\"/>
27
+ <span class=\"booksearch__title\">%s</span>
28
+ </div>", book_url_images, book_titles),
29
+ value = book_ids) |> purrr::transpose(),
30
+ multiple = TRUE,
31
+ optionsCount = 6,
32
+ search = TRUE,
33
+ width = "70vw",
34
+ showValueAsTags = TRUE,
35
+ html = TRUE
36
+ )
37
+ )
38
+ res
39
+ })
40
+
41
+ return(reactive({input$select_books_input}))
42
+ })
43
+
44
+ }
app/view/react.R ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ box::use(
2
+ rhino[react_component],
3
+ )
4
+ #' export
5
+ BookCard <- react_component("BookCard")
config.yml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ default:
2
+ rhino_log_level: !expr Sys.getenv("RHINO_LOG_LEVEL", "INFO")
3
+ rhino_log_file: !expr Sys.getenv("RHINO_LOG_FILE", NA)
data/dataset_goodreads_filtered.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76a0ebb1bd296aa2530b9877287d8977b03b1090652d8d4db154460360ff225d
3
+ size 20323329
data/item_to_item_similarity_dataframe_full.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8caa5f13d0f14c93bfb474f7d861179e03f60c54c1c12ee7c617f46f7305f5b1
3
+ size 12225876
data/ratings_filtered.rds ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc9ed64cec40fce47ff3b624e284155d73febae0b0136cbdae6144dddd108d88
3
+ size 2926568
data/ref_corp_tfidf_new.rds ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ffb64a1fc4ecde2ec9000efc63671fb0347bc893656dc04de8cb893db63df78
3
+ size 5515784
data/svdf.rds ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:935dcfd836b66a72084b7f3e8acd08bae4f4c5dfe91b1f02af273fac49acd2ab
3
+ size 10368893
dependencies.R ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file allows packrat (used by rsconnect during deployment) to pick up dependencies.
2
+ library(bsicons)
3
+ library(bslib)
4
+ library(dplyr)
5
+ library(gargoyle)
6
+ library(quanteda)
7
+ library(quanteda.corpora)
8
+ library(quanteda.textplots)
9
+ library(quanteda.textstats)
10
+ library(readtext)
11
+ library(rhino)
12
+ library(shiny)
13
+ library(shiny.react)
14
+ library(shinyWidgets)
15
+ library(spacyr)
16
+ library(waiter)
package-lock.json ADDED
@@ -0,0 +1,1348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "webapp",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "dependencies": {
8
+ "@anatoliygatt/heart-switch": "^1.0.13",
9
+ "@emotion/react": "^11.11.4",
10
+ "@emotion/styled": "^11.11.5",
11
+ "@react-sandbox/heart": "^1.1.0",
12
+ "framer-motion": "^11.1.1",
13
+ "react-heart": "^1.0.6",
14
+ "react-icons": "^5.0.1",
15
+ "sweetalert2": "^11.10.6",
16
+ "sweetalert2-react-content": "^5.0.7"
17
+ },
18
+ "devDependencies": {
19
+ "typescript": "^5.4.5"
20
+ }
21
+ },
22
+ "node_modules/@ampproject/remapping": {
23
+ "version": "2.3.0",
24
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
25
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
26
+ "peer": true,
27
+ "dependencies": {
28
+ "@jridgewell/gen-mapping": "^0.3.5",
29
+ "@jridgewell/trace-mapping": "^0.3.24"
30
+ },
31
+ "engines": {
32
+ "node": ">=6.0.0"
33
+ }
34
+ },
35
+ "node_modules/@anatoliygatt/heart-switch": {
36
+ "version": "1.0.13",
37
+ "resolved": "https://registry.npmjs.org/@anatoliygatt/heart-switch/-/heart-switch-1.0.13.tgz",
38
+ "integrity": "sha512-Dr3gdbBoMgbVFbtB4pcXSZdy+p3vfbIx9WweQFHVDzWIlDaZAkjywVti/Vz/Jz2BWYUkTcH6aIAb8goxLxaOwA==",
39
+ "peerDependencies": {
40
+ "@emotion/react": "^11.0.0",
41
+ "@emotion/styled": "^11.0.0",
42
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
43
+ }
44
+ },
45
+ "node_modules/@babel/code-frame": {
46
+ "version": "7.24.2",
47
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
48
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
49
+ "dependencies": {
50
+ "@babel/highlight": "^7.24.2",
51
+ "picocolors": "^1.0.0"
52
+ },
53
+ "engines": {
54
+ "node": ">=6.9.0"
55
+ }
56
+ },
57
+ "node_modules/@babel/compat-data": {
58
+ "version": "7.24.4",
59
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
60
+ "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
61
+ "peer": true,
62
+ "engines": {
63
+ "node": ">=6.9.0"
64
+ }
65
+ },
66
+ "node_modules/@babel/core": {
67
+ "version": "7.24.4",
68
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz",
69
+ "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==",
70
+ "peer": true,
71
+ "dependencies": {
72
+ "@ampproject/remapping": "^2.2.0",
73
+ "@babel/code-frame": "^7.24.2",
74
+ "@babel/generator": "^7.24.4",
75
+ "@babel/helper-compilation-targets": "^7.23.6",
76
+ "@babel/helper-module-transforms": "^7.23.3",
77
+ "@babel/helpers": "^7.24.4",
78
+ "@babel/parser": "^7.24.4",
79
+ "@babel/template": "^7.24.0",
80
+ "@babel/traverse": "^7.24.1",
81
+ "@babel/types": "^7.24.0",
82
+ "convert-source-map": "^2.0.0",
83
+ "debug": "^4.1.0",
84
+ "gensync": "^1.0.0-beta.2",
85
+ "json5": "^2.2.3",
86
+ "semver": "^6.3.1"
87
+ },
88
+ "engines": {
89
+ "node": ">=6.9.0"
90
+ },
91
+ "funding": {
92
+ "type": "opencollective",
93
+ "url": "https://opencollective.com/babel"
94
+ }
95
+ },
96
+ "node_modules/@babel/generator": {
97
+ "version": "7.24.4",
98
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz",
99
+ "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==",
100
+ "dependencies": {
101
+ "@babel/types": "^7.24.0",
102
+ "@jridgewell/gen-mapping": "^0.3.5",
103
+ "@jridgewell/trace-mapping": "^0.3.25",
104
+ "jsesc": "^2.5.1"
105
+ },
106
+ "engines": {
107
+ "node": ">=6.9.0"
108
+ }
109
+ },
110
+ "node_modules/@babel/helper-annotate-as-pure": {
111
+ "version": "7.22.5",
112
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
113
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
114
+ "dependencies": {
115
+ "@babel/types": "^7.22.5"
116
+ },
117
+ "engines": {
118
+ "node": ">=6.9.0"
119
+ }
120
+ },
121
+ "node_modules/@babel/helper-compilation-targets": {
122
+ "version": "7.23.6",
123
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
124
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
125
+ "peer": true,
126
+ "dependencies": {
127
+ "@babel/compat-data": "^7.23.5",
128
+ "@babel/helper-validator-option": "^7.23.5",
129
+ "browserslist": "^4.22.2",
130
+ "lru-cache": "^5.1.1",
131
+ "semver": "^6.3.1"
132
+ },
133
+ "engines": {
134
+ "node": ">=6.9.0"
135
+ }
136
+ },
137
+ "node_modules/@babel/helper-environment-visitor": {
138
+ "version": "7.22.20",
139
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
140
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
141
+ "engines": {
142
+ "node": ">=6.9.0"
143
+ }
144
+ },
145
+ "node_modules/@babel/helper-function-name": {
146
+ "version": "7.23.0",
147
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
148
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
149
+ "dependencies": {
150
+ "@babel/template": "^7.22.15",
151
+ "@babel/types": "^7.23.0"
152
+ },
153
+ "engines": {
154
+ "node": ">=6.9.0"
155
+ }
156
+ },
157
+ "node_modules/@babel/helper-hoist-variables": {
158
+ "version": "7.22.5",
159
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
160
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
161
+ "dependencies": {
162
+ "@babel/types": "^7.22.5"
163
+ },
164
+ "engines": {
165
+ "node": ">=6.9.0"
166
+ }
167
+ },
168
+ "node_modules/@babel/helper-module-imports": {
169
+ "version": "7.24.3",
170
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
171
+ "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
172
+ "dependencies": {
173
+ "@babel/types": "^7.24.0"
174
+ },
175
+ "engines": {
176
+ "node": ">=6.9.0"
177
+ }
178
+ },
179
+ "node_modules/@babel/helper-module-transforms": {
180
+ "version": "7.23.3",
181
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
182
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
183
+ "peer": true,
184
+ "dependencies": {
185
+ "@babel/helper-environment-visitor": "^7.22.20",
186
+ "@babel/helper-module-imports": "^7.22.15",
187
+ "@babel/helper-simple-access": "^7.22.5",
188
+ "@babel/helper-split-export-declaration": "^7.22.6",
189
+ "@babel/helper-validator-identifier": "^7.22.20"
190
+ },
191
+ "engines": {
192
+ "node": ">=6.9.0"
193
+ },
194
+ "peerDependencies": {
195
+ "@babel/core": "^7.0.0"
196
+ }
197
+ },
198
+ "node_modules/@babel/helper-plugin-utils": {
199
+ "version": "7.24.0",
200
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
201
+ "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
202
+ "engines": {
203
+ "node": ">=6.9.0"
204
+ }
205
+ },
206
+ "node_modules/@babel/helper-simple-access": {
207
+ "version": "7.22.5",
208
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
209
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
210
+ "peer": true,
211
+ "dependencies": {
212
+ "@babel/types": "^7.22.5"
213
+ },
214
+ "engines": {
215
+ "node": ">=6.9.0"
216
+ }
217
+ },
218
+ "node_modules/@babel/helper-split-export-declaration": {
219
+ "version": "7.22.6",
220
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
221
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
222
+ "dependencies": {
223
+ "@babel/types": "^7.22.5"
224
+ },
225
+ "engines": {
226
+ "node": ">=6.9.0"
227
+ }
228
+ },
229
+ "node_modules/@babel/helper-string-parser": {
230
+ "version": "7.24.1",
231
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
232
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
233
+ "engines": {
234
+ "node": ">=6.9.0"
235
+ }
236
+ },
237
+ "node_modules/@babel/helper-validator-identifier": {
238
+ "version": "7.22.20",
239
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
240
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
241
+ "engines": {
242
+ "node": ">=6.9.0"
243
+ }
244
+ },
245
+ "node_modules/@babel/helper-validator-option": {
246
+ "version": "7.23.5",
247
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
248
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
249
+ "peer": true,
250
+ "engines": {
251
+ "node": ">=6.9.0"
252
+ }
253
+ },
254
+ "node_modules/@babel/helpers": {
255
+ "version": "7.24.4",
256
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz",
257
+ "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==",
258
+ "peer": true,
259
+ "dependencies": {
260
+ "@babel/template": "^7.24.0",
261
+ "@babel/traverse": "^7.24.1",
262
+ "@babel/types": "^7.24.0"
263
+ },
264
+ "engines": {
265
+ "node": ">=6.9.0"
266
+ }
267
+ },
268
+ "node_modules/@babel/highlight": {
269
+ "version": "7.24.2",
270
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
271
+ "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
272
+ "dependencies": {
273
+ "@babel/helper-validator-identifier": "^7.22.20",
274
+ "chalk": "^2.4.2",
275
+ "js-tokens": "^4.0.0",
276
+ "picocolors": "^1.0.0"
277
+ },
278
+ "engines": {
279
+ "node": ">=6.9.0"
280
+ }
281
+ },
282
+ "node_modules/@babel/parser": {
283
+ "version": "7.24.4",
284
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz",
285
+ "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==",
286
+ "bin": {
287
+ "parser": "bin/babel-parser.js"
288
+ },
289
+ "engines": {
290
+ "node": ">=6.0.0"
291
+ }
292
+ },
293
+ "node_modules/@babel/plugin-syntax-jsx": {
294
+ "version": "7.24.1",
295
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz",
296
+ "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==",
297
+ "dependencies": {
298
+ "@babel/helper-plugin-utils": "^7.24.0"
299
+ },
300
+ "engines": {
301
+ "node": ">=6.9.0"
302
+ },
303
+ "peerDependencies": {
304
+ "@babel/core": "^7.0.0-0"
305
+ }
306
+ },
307
+ "node_modules/@babel/runtime": {
308
+ "version": "7.24.4",
309
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz",
310
+ "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==",
311
+ "dependencies": {
312
+ "regenerator-runtime": "^0.14.0"
313
+ },
314
+ "engines": {
315
+ "node": ">=6.9.0"
316
+ }
317
+ },
318
+ "node_modules/@babel/template": {
319
+ "version": "7.24.0",
320
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
321
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
322
+ "dependencies": {
323
+ "@babel/code-frame": "^7.23.5",
324
+ "@babel/parser": "^7.24.0",
325
+ "@babel/types": "^7.24.0"
326
+ },
327
+ "engines": {
328
+ "node": ">=6.9.0"
329
+ }
330
+ },
331
+ "node_modules/@babel/traverse": {
332
+ "version": "7.24.1",
333
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
334
+ "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
335
+ "dependencies": {
336
+ "@babel/code-frame": "^7.24.1",
337
+ "@babel/generator": "^7.24.1",
338
+ "@babel/helper-environment-visitor": "^7.22.20",
339
+ "@babel/helper-function-name": "^7.23.0",
340
+ "@babel/helper-hoist-variables": "^7.22.5",
341
+ "@babel/helper-split-export-declaration": "^7.22.6",
342
+ "@babel/parser": "^7.24.1",
343
+ "@babel/types": "^7.24.0",
344
+ "debug": "^4.3.1",
345
+ "globals": "^11.1.0"
346
+ },
347
+ "engines": {
348
+ "node": ">=6.9.0"
349
+ }
350
+ },
351
+ "node_modules/@babel/types": {
352
+ "version": "7.24.0",
353
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
354
+ "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
355
+ "dependencies": {
356
+ "@babel/helper-string-parser": "^7.23.4",
357
+ "@babel/helper-validator-identifier": "^7.22.20",
358
+ "to-fast-properties": "^2.0.0"
359
+ },
360
+ "engines": {
361
+ "node": ">=6.9.0"
362
+ }
363
+ },
364
+ "node_modules/@emotion/babel-plugin": {
365
+ "version": "11.11.0",
366
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
367
+ "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
368
+ "dependencies": {
369
+ "@babel/helper-module-imports": "^7.16.7",
370
+ "@babel/runtime": "^7.18.3",
371
+ "@emotion/hash": "^0.9.1",
372
+ "@emotion/memoize": "^0.8.1",
373
+ "@emotion/serialize": "^1.1.2",
374
+ "babel-plugin-macros": "^3.1.0",
375
+ "convert-source-map": "^1.5.0",
376
+ "escape-string-regexp": "^4.0.0",
377
+ "find-root": "^1.1.0",
378
+ "source-map": "^0.5.7",
379
+ "stylis": "4.2.0"
380
+ }
381
+ },
382
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
383
+ "version": "1.9.0",
384
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
385
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
386
+ },
387
+ "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
388
+ "version": "4.0.0",
389
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
390
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
391
+ "engines": {
392
+ "node": ">=10"
393
+ },
394
+ "funding": {
395
+ "url": "https://github.com/sponsors/sindresorhus"
396
+ }
397
+ },
398
+ "node_modules/@emotion/cache": {
399
+ "version": "11.11.0",
400
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
401
+ "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
402
+ "dependencies": {
403
+ "@emotion/memoize": "^0.8.1",
404
+ "@emotion/sheet": "^1.2.2",
405
+ "@emotion/utils": "^1.2.1",
406
+ "@emotion/weak-memoize": "^0.3.1",
407
+ "stylis": "4.2.0"
408
+ }
409
+ },
410
+ "node_modules/@emotion/hash": {
411
+ "version": "0.9.1",
412
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
413
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
414
+ },
415
+ "node_modules/@emotion/is-prop-valid": {
416
+ "version": "1.2.2",
417
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
418
+ "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
419
+ "dependencies": {
420
+ "@emotion/memoize": "^0.8.1"
421
+ }
422
+ },
423
+ "node_modules/@emotion/memoize": {
424
+ "version": "0.8.1",
425
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
426
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
427
+ },
428
+ "node_modules/@emotion/react": {
429
+ "version": "11.11.4",
430
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz",
431
+ "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==",
432
+ "dependencies": {
433
+ "@babel/runtime": "^7.18.3",
434
+ "@emotion/babel-plugin": "^11.11.0",
435
+ "@emotion/cache": "^11.11.0",
436
+ "@emotion/serialize": "^1.1.3",
437
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
438
+ "@emotion/utils": "^1.2.1",
439
+ "@emotion/weak-memoize": "^0.3.1",
440
+ "hoist-non-react-statics": "^3.3.1"
441
+ },
442
+ "peerDependencies": {
443
+ "react": ">=16.8.0"
444
+ },
445
+ "peerDependenciesMeta": {
446
+ "@types/react": {
447
+ "optional": true
448
+ }
449
+ }
450
+ },
451
+ "node_modules/@emotion/serialize": {
452
+ "version": "1.1.4",
453
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz",
454
+ "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==",
455
+ "dependencies": {
456
+ "@emotion/hash": "^0.9.1",
457
+ "@emotion/memoize": "^0.8.1",
458
+ "@emotion/unitless": "^0.8.1",
459
+ "@emotion/utils": "^1.2.1",
460
+ "csstype": "^3.0.2"
461
+ }
462
+ },
463
+ "node_modules/@emotion/serialize/node_modules/@emotion/unitless": {
464
+ "version": "0.8.1",
465
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
466
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
467
+ },
468
+ "node_modules/@emotion/sheet": {
469
+ "version": "1.2.2",
470
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
471
+ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
472
+ },
473
+ "node_modules/@emotion/styled": {
474
+ "version": "11.11.5",
475
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz",
476
+ "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==",
477
+ "dependencies": {
478
+ "@babel/runtime": "^7.18.3",
479
+ "@emotion/babel-plugin": "^11.11.0",
480
+ "@emotion/is-prop-valid": "^1.2.2",
481
+ "@emotion/serialize": "^1.1.4",
482
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
483
+ "@emotion/utils": "^1.2.1"
484
+ },
485
+ "peerDependencies": {
486
+ "@emotion/react": "^11.0.0-rc.0",
487
+ "react": ">=16.8.0"
488
+ },
489
+ "peerDependenciesMeta": {
490
+ "@types/react": {
491
+ "optional": true
492
+ }
493
+ }
494
+ },
495
+ "node_modules/@emotion/stylis": {
496
+ "version": "0.8.5",
497
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
498
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
499
+ },
500
+ "node_modules/@emotion/unitless": {
501
+ "version": "0.7.5",
502
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
503
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
504
+ },
505
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
506
+ "version": "1.0.1",
507
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
508
+ "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
509
+ "peerDependencies": {
510
+ "react": ">=16.8.0"
511
+ }
512
+ },
513
+ "node_modules/@emotion/utils": {
514
+ "version": "1.2.1",
515
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
516
+ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
517
+ },
518
+ "node_modules/@emotion/weak-memoize": {
519
+ "version": "0.3.1",
520
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
521
+ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
522
+ },
523
+ "node_modules/@jridgewell/gen-mapping": {
524
+ "version": "0.3.5",
525
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
526
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
527
+ "dependencies": {
528
+ "@jridgewell/set-array": "^1.2.1",
529
+ "@jridgewell/sourcemap-codec": "^1.4.10",
530
+ "@jridgewell/trace-mapping": "^0.3.24"
531
+ },
532
+ "engines": {
533
+ "node": ">=6.0.0"
534
+ }
535
+ },
536
+ "node_modules/@jridgewell/resolve-uri": {
537
+ "version": "3.1.2",
538
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
539
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
540
+ "engines": {
541
+ "node": ">=6.0.0"
542
+ }
543
+ },
544
+ "node_modules/@jridgewell/set-array": {
545
+ "version": "1.2.1",
546
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
547
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
548
+ "engines": {
549
+ "node": ">=6.0.0"
550
+ }
551
+ },
552
+ "node_modules/@jridgewell/sourcemap-codec": {
553
+ "version": "1.4.15",
554
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
555
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
556
+ },
557
+ "node_modules/@jridgewell/trace-mapping": {
558
+ "version": "0.3.25",
559
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
560
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
561
+ "dependencies": {
562
+ "@jridgewell/resolve-uri": "^3.1.0",
563
+ "@jridgewell/sourcemap-codec": "^1.4.14"
564
+ }
565
+ },
566
+ "node_modules/@react-sandbox/heart": {
567
+ "version": "1.1.0",
568
+ "resolved": "https://registry.npmjs.org/@react-sandbox/heart/-/heart-1.1.0.tgz",
569
+ "integrity": "sha512-oGthkH936UyDnjfdBxRM/88Bimcg1eYgi3eITYp19bv0WkKMd2AD8Ede2hCK61SEkF3F2wmGUEF4Jdr17XgDXw==",
570
+ "peerDependencies": {
571
+ "react": "^16.8 || ^17.0 || ^18.0",
572
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
573
+ }
574
+ },
575
+ "node_modules/@types/parse-json": {
576
+ "version": "4.0.2",
577
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
578
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
579
+ },
580
+ "node_modules/ansi-styles": {
581
+ "version": "3.2.1",
582
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
583
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
584
+ "dependencies": {
585
+ "color-convert": "^1.9.0"
586
+ },
587
+ "engines": {
588
+ "node": ">=4"
589
+ }
590
+ },
591
+ "node_modules/babel-plugin-macros": {
592
+ "version": "3.1.0",
593
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
594
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
595
+ "dependencies": {
596
+ "@babel/runtime": "^7.12.5",
597
+ "cosmiconfig": "^7.0.0",
598
+ "resolve": "^1.19.0"
599
+ },
600
+ "engines": {
601
+ "node": ">=10",
602
+ "npm": ">=6"
603
+ }
604
+ },
605
+ "node_modules/babel-plugin-styled-components": {
606
+ "version": "2.1.4",
607
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz",
608
+ "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==",
609
+ "dependencies": {
610
+ "@babel/helper-annotate-as-pure": "^7.22.5",
611
+ "@babel/helper-module-imports": "^7.22.5",
612
+ "@babel/plugin-syntax-jsx": "^7.22.5",
613
+ "lodash": "^4.17.21",
614
+ "picomatch": "^2.3.1"
615
+ },
616
+ "peerDependencies": {
617
+ "styled-components": ">= 2"
618
+ }
619
+ },
620
+ "node_modules/browserslist": {
621
+ "version": "4.23.0",
622
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
623
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
624
+ "funding": [
625
+ {
626
+ "type": "opencollective",
627
+ "url": "https://opencollective.com/browserslist"
628
+ },
629
+ {
630
+ "type": "tidelift",
631
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
632
+ },
633
+ {
634
+ "type": "github",
635
+ "url": "https://github.com/sponsors/ai"
636
+ }
637
+ ],
638
+ "peer": true,
639
+ "dependencies": {
640
+ "caniuse-lite": "^1.0.30001587",
641
+ "electron-to-chromium": "^1.4.668",
642
+ "node-releases": "^2.0.14",
643
+ "update-browserslist-db": "^1.0.13"
644
+ },
645
+ "bin": {
646
+ "browserslist": "cli.js"
647
+ },
648
+ "engines": {
649
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
650
+ }
651
+ },
652
+ "node_modules/callsites": {
653
+ "version": "3.1.0",
654
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
655
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
656
+ "engines": {
657
+ "node": ">=6"
658
+ }
659
+ },
660
+ "node_modules/camelize": {
661
+ "version": "1.0.1",
662
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
663
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
664
+ "funding": {
665
+ "url": "https://github.com/sponsors/ljharb"
666
+ }
667
+ },
668
+ "node_modules/caniuse-lite": {
669
+ "version": "1.0.30001610",
670
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz",
671
+ "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==",
672
+ "funding": [
673
+ {
674
+ "type": "opencollective",
675
+ "url": "https://opencollective.com/browserslist"
676
+ },
677
+ {
678
+ "type": "tidelift",
679
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
680
+ },
681
+ {
682
+ "type": "github",
683
+ "url": "https://github.com/sponsors/ai"
684
+ }
685
+ ],
686
+ "peer": true
687
+ },
688
+ "node_modules/chalk": {
689
+ "version": "2.4.2",
690
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
691
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
692
+ "dependencies": {
693
+ "ansi-styles": "^3.2.1",
694
+ "escape-string-regexp": "^1.0.5",
695
+ "supports-color": "^5.3.0"
696
+ },
697
+ "engines": {
698
+ "node": ">=4"
699
+ }
700
+ },
701
+ "node_modules/color-convert": {
702
+ "version": "1.9.3",
703
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
704
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
705
+ "dependencies": {
706
+ "color-name": "1.1.3"
707
+ }
708
+ },
709
+ "node_modules/color-name": {
710
+ "version": "1.1.3",
711
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
712
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
713
+ },
714
+ "node_modules/convert-source-map": {
715
+ "version": "2.0.0",
716
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
717
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
718
+ "peer": true
719
+ },
720
+ "node_modules/cosmiconfig": {
721
+ "version": "7.1.0",
722
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
723
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
724
+ "dependencies": {
725
+ "@types/parse-json": "^4.0.0",
726
+ "import-fresh": "^3.2.1",
727
+ "parse-json": "^5.0.0",
728
+ "path-type": "^4.0.0",
729
+ "yaml": "^1.10.0"
730
+ },
731
+ "engines": {
732
+ "node": ">=10"
733
+ }
734
+ },
735
+ "node_modules/css-color-keywords": {
736
+ "version": "1.0.0",
737
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
738
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
739
+ "engines": {
740
+ "node": ">=4"
741
+ }
742
+ },
743
+ "node_modules/css-to-react-native": {
744
+ "version": "3.2.0",
745
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
746
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
747
+ "dependencies": {
748
+ "camelize": "^1.0.0",
749
+ "css-color-keywords": "^1.0.0",
750
+ "postcss-value-parser": "^4.0.2"
751
+ }
752
+ },
753
+ "node_modules/csstype": {
754
+ "version": "3.1.3",
755
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
756
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
757
+ },
758
+ "node_modules/debug": {
759
+ "version": "4.3.4",
760
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
761
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
762
+ "dependencies": {
763
+ "ms": "2.1.2"
764
+ },
765
+ "engines": {
766
+ "node": ">=6.0"
767
+ },
768
+ "peerDependenciesMeta": {
769
+ "supports-color": {
770
+ "optional": true
771
+ }
772
+ }
773
+ },
774
+ "node_modules/electron-to-chromium": {
775
+ "version": "1.4.737",
776
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.737.tgz",
777
+ "integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==",
778
+ "peer": true
779
+ },
780
+ "node_modules/error-ex": {
781
+ "version": "1.3.2",
782
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
783
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
784
+ "dependencies": {
785
+ "is-arrayish": "^0.2.1"
786
+ }
787
+ },
788
+ "node_modules/escalade": {
789
+ "version": "3.1.2",
790
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
791
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
792
+ "peer": true,
793
+ "engines": {
794
+ "node": ">=6"
795
+ }
796
+ },
797
+ "node_modules/escape-string-regexp": {
798
+ "version": "1.0.5",
799
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
800
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
801
+ "engines": {
802
+ "node": ">=0.8.0"
803
+ }
804
+ },
805
+ "node_modules/find-root": {
806
+ "version": "1.1.0",
807
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
808
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
809
+ },
810
+ "node_modules/framer-motion": {
811
+ "version": "11.1.1",
812
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.1.1.tgz",
813
+ "integrity": "sha512-h2Zz95boULAIvow/2y8CQTFv5MHxPQO/98DrAwMe4HoI8/fcU6hUfH+886u8W/5oedp5zCCZ7qUVS46ZWoTEuA==",
814
+ "dependencies": {
815
+ "tslib": "^2.4.0"
816
+ },
817
+ "peerDependencies": {
818
+ "@emotion/is-prop-valid": "*",
819
+ "react": "^18.0.0",
820
+ "react-dom": "^18.0.0"
821
+ },
822
+ "peerDependenciesMeta": {
823
+ "@emotion/is-prop-valid": {
824
+ "optional": true
825
+ },
826
+ "react": {
827
+ "optional": true
828
+ },
829
+ "react-dom": {
830
+ "optional": true
831
+ }
832
+ }
833
+ },
834
+ "node_modules/function-bind": {
835
+ "version": "1.1.2",
836
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
837
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
838
+ "funding": {
839
+ "url": "https://github.com/sponsors/ljharb"
840
+ }
841
+ },
842
+ "node_modules/gensync": {
843
+ "version": "1.0.0-beta.2",
844
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
845
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
846
+ "peer": true,
847
+ "engines": {
848
+ "node": ">=6.9.0"
849
+ }
850
+ },
851
+ "node_modules/globals": {
852
+ "version": "11.12.0",
853
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
854
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
855
+ "engines": {
856
+ "node": ">=4"
857
+ }
858
+ },
859
+ "node_modules/has-flag": {
860
+ "version": "3.0.0",
861
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
862
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
863
+ "engines": {
864
+ "node": ">=4"
865
+ }
866
+ },
867
+ "node_modules/hasown": {
868
+ "version": "2.0.2",
869
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
870
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
871
+ "dependencies": {
872
+ "function-bind": "^1.1.2"
873
+ },
874
+ "engines": {
875
+ "node": ">= 0.4"
876
+ }
877
+ },
878
+ "node_modules/hoist-non-react-statics": {
879
+ "version": "3.3.2",
880
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
881
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
882
+ "dependencies": {
883
+ "react-is": "^16.7.0"
884
+ }
885
+ },
886
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
887
+ "version": "16.13.1",
888
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
889
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
890
+ },
891
+ "node_modules/import-fresh": {
892
+ "version": "3.3.0",
893
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
894
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
895
+ "dependencies": {
896
+ "parent-module": "^1.0.0",
897
+ "resolve-from": "^4.0.0"
898
+ },
899
+ "engines": {
900
+ "node": ">=6"
901
+ },
902
+ "funding": {
903
+ "url": "https://github.com/sponsors/sindresorhus"
904
+ }
905
+ },
906
+ "node_modules/is-arrayish": {
907
+ "version": "0.2.1",
908
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
909
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
910
+ },
911
+ "node_modules/is-core-module": {
912
+ "version": "2.13.1",
913
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
914
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
915
+ "dependencies": {
916
+ "hasown": "^2.0.0"
917
+ },
918
+ "funding": {
919
+ "url": "https://github.com/sponsors/ljharb"
920
+ }
921
+ },
922
+ "node_modules/js-tokens": {
923
+ "version": "4.0.0",
924
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
925
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
926
+ },
927
+ "node_modules/jsesc": {
928
+ "version": "2.5.2",
929
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
930
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
931
+ "bin": {
932
+ "jsesc": "bin/jsesc"
933
+ },
934
+ "engines": {
935
+ "node": ">=4"
936
+ }
937
+ },
938
+ "node_modules/json-parse-even-better-errors": {
939
+ "version": "2.3.1",
940
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
941
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
942
+ },
943
+ "node_modules/json5": {
944
+ "version": "2.2.3",
945
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
946
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
947
+ "peer": true,
948
+ "bin": {
949
+ "json5": "lib/cli.js"
950
+ },
951
+ "engines": {
952
+ "node": ">=6"
953
+ }
954
+ },
955
+ "node_modules/lines-and-columns": {
956
+ "version": "1.2.4",
957
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
958
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
959
+ },
960
+ "node_modules/lodash": {
961
+ "version": "4.17.21",
962
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
963
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
964
+ },
965
+ "node_modules/loose-envify": {
966
+ "version": "1.4.0",
967
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
968
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
969
+ "dependencies": {
970
+ "js-tokens": "^3.0.0 || ^4.0.0"
971
+ },
972
+ "bin": {
973
+ "loose-envify": "cli.js"
974
+ }
975
+ },
976
+ "node_modules/lru-cache": {
977
+ "version": "5.1.1",
978
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
979
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
980
+ "peer": true,
981
+ "dependencies": {
982
+ "yallist": "^3.0.2"
983
+ }
984
+ },
985
+ "node_modules/ms": {
986
+ "version": "2.1.2",
987
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
988
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
989
+ },
990
+ "node_modules/node-releases": {
991
+ "version": "2.0.14",
992
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
993
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
994
+ "peer": true
995
+ },
996
+ "node_modules/object-assign": {
997
+ "version": "4.1.1",
998
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
999
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1000
+ "engines": {
1001
+ "node": ">=0.10.0"
1002
+ }
1003
+ },
1004
+ "node_modules/parent-module": {
1005
+ "version": "1.0.1",
1006
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1007
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1008
+ "dependencies": {
1009
+ "callsites": "^3.0.0"
1010
+ },
1011
+ "engines": {
1012
+ "node": ">=6"
1013
+ }
1014
+ },
1015
+ "node_modules/parse-json": {
1016
+ "version": "5.2.0",
1017
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
1018
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
1019
+ "dependencies": {
1020
+ "@babel/code-frame": "^7.0.0",
1021
+ "error-ex": "^1.3.1",
1022
+ "json-parse-even-better-errors": "^2.3.0",
1023
+ "lines-and-columns": "^1.1.6"
1024
+ },
1025
+ "engines": {
1026
+ "node": ">=8"
1027
+ },
1028
+ "funding": {
1029
+ "url": "https://github.com/sponsors/sindresorhus"
1030
+ }
1031
+ },
1032
+ "node_modules/path-parse": {
1033
+ "version": "1.0.7",
1034
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1035
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
1036
+ },
1037
+ "node_modules/path-type": {
1038
+ "version": "4.0.0",
1039
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
1040
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
1041
+ "engines": {
1042
+ "node": ">=8"
1043
+ }
1044
+ },
1045
+ "node_modules/picocolors": {
1046
+ "version": "1.0.0",
1047
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1048
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1049
+ },
1050
+ "node_modules/picomatch": {
1051
+ "version": "2.3.1",
1052
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1053
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1054
+ "engines": {
1055
+ "node": ">=8.6"
1056
+ },
1057
+ "funding": {
1058
+ "url": "https://github.com/sponsors/jonschlinkert"
1059
+ }
1060
+ },
1061
+ "node_modules/postcss-value-parser": {
1062
+ "version": "4.2.0",
1063
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1064
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
1065
+ },
1066
+ "node_modules/prop-types": {
1067
+ "version": "15.8.1",
1068
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
1069
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
1070
+ "dependencies": {
1071
+ "loose-envify": "^1.4.0",
1072
+ "object-assign": "^4.1.1",
1073
+ "react-is": "^16.13.1"
1074
+ }
1075
+ },
1076
+ "node_modules/prop-types/node_modules/react-is": {
1077
+ "version": "16.13.1",
1078
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1079
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
1080
+ },
1081
+ "node_modules/react": {
1082
+ "version": "18.2.0",
1083
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1084
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1085
+ "peer": true,
1086
+ "dependencies": {
1087
+ "loose-envify": "^1.1.0"
1088
+ },
1089
+ "engines": {
1090
+ "node": ">=0.10.0"
1091
+ }
1092
+ },
1093
+ "node_modules/react-dom": {
1094
+ "version": "18.2.0",
1095
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1096
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1097
+ "peer": true,
1098
+ "dependencies": {
1099
+ "loose-envify": "^1.1.0",
1100
+ "scheduler": "^0.23.0"
1101
+ },
1102
+ "peerDependencies": {
1103
+ "react": "^18.2.0"
1104
+ }
1105
+ },
1106
+ "node_modules/react-heart": {
1107
+ "version": "1.0.6",
1108
+ "resolved": "https://registry.npmjs.org/react-heart/-/react-heart-1.0.6.tgz",
1109
+ "integrity": "sha512-mLnQNgVPv6vgr1qn/7mwxjuvp4z9yHUoSPCBWQ7RTRPa5NdgkNIutfGQGieY8i3RmFYCfZzSu2Wjxrsr/plExA==",
1110
+ "dependencies": {
1111
+ "prop-types": "^15.7.2",
1112
+ "react": "^17.0.1",
1113
+ "styled-components": "^5.2.1"
1114
+ }
1115
+ },
1116
+ "node_modules/react-heart/node_modules/react": {
1117
+ "version": "17.0.2",
1118
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
1119
+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
1120
+ "dependencies": {
1121
+ "loose-envify": "^1.1.0",
1122
+ "object-assign": "^4.1.1"
1123
+ },
1124
+ "engines": {
1125
+ "node": ">=0.10.0"
1126
+ }
1127
+ },
1128
+ "node_modules/react-icons": {
1129
+ "version": "5.0.1",
1130
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz",
1131
+ "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==",
1132
+ "peerDependencies": {
1133
+ "react": "*"
1134
+ }
1135
+ },
1136
+ "node_modules/react-is": {
1137
+ "version": "18.2.0",
1138
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
1139
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
1140
+ "peer": true
1141
+ },
1142
+ "node_modules/regenerator-runtime": {
1143
+ "version": "0.14.1",
1144
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
1145
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
1146
+ },
1147
+ "node_modules/resolve": {
1148
+ "version": "1.22.8",
1149
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
1150
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
1151
+ "dependencies": {
1152
+ "is-core-module": "^2.13.0",
1153
+ "path-parse": "^1.0.7",
1154
+ "supports-preserve-symlinks-flag": "^1.0.0"
1155
+ },
1156
+ "bin": {
1157
+ "resolve": "bin/resolve"
1158
+ },
1159
+ "funding": {
1160
+ "url": "https://github.com/sponsors/ljharb"
1161
+ }
1162
+ },
1163
+ "node_modules/resolve-from": {
1164
+ "version": "4.0.0",
1165
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1166
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1167
+ "engines": {
1168
+ "node": ">=4"
1169
+ }
1170
+ },
1171
+ "node_modules/scheduler": {
1172
+ "version": "0.23.0",
1173
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1174
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1175
+ "peer": true,
1176
+ "dependencies": {
1177
+ "loose-envify": "^1.1.0"
1178
+ }
1179
+ },
1180
+ "node_modules/semver": {
1181
+ "version": "6.3.1",
1182
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1183
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1184
+ "peer": true,
1185
+ "bin": {
1186
+ "semver": "bin/semver.js"
1187
+ }
1188
+ },
1189
+ "node_modules/shallowequal": {
1190
+ "version": "1.1.0",
1191
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
1192
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
1193
+ },
1194
+ "node_modules/source-map": {
1195
+ "version": "0.5.7",
1196
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1197
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
1198
+ "engines": {
1199
+ "node": ">=0.10.0"
1200
+ }
1201
+ },
1202
+ "node_modules/styled-components": {
1203
+ "version": "5.3.11",
1204
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz",
1205
+ "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==",
1206
+ "dependencies": {
1207
+ "@babel/helper-module-imports": "^7.0.0",
1208
+ "@babel/traverse": "^7.4.5",
1209
+ "@emotion/is-prop-valid": "^1.1.0",
1210
+ "@emotion/stylis": "^0.8.4",
1211
+ "@emotion/unitless": "^0.7.4",
1212
+ "babel-plugin-styled-components": ">= 1.12.0",
1213
+ "css-to-react-native": "^3.0.0",
1214
+ "hoist-non-react-statics": "^3.0.0",
1215
+ "shallowequal": "^1.1.0",
1216
+ "supports-color": "^5.5.0"
1217
+ },
1218
+ "engines": {
1219
+ "node": ">=10"
1220
+ },
1221
+ "funding": {
1222
+ "type": "opencollective",
1223
+ "url": "https://opencollective.com/styled-components"
1224
+ },
1225
+ "peerDependencies": {
1226
+ "react": ">= 16.8.0",
1227
+ "react-dom": ">= 16.8.0",
1228
+ "react-is": ">= 16.8.0"
1229
+ }
1230
+ },
1231
+ "node_modules/stylis": {
1232
+ "version": "4.2.0",
1233
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
1234
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
1235
+ },
1236
+ "node_modules/supports-color": {
1237
+ "version": "5.5.0",
1238
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1239
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1240
+ "dependencies": {
1241
+ "has-flag": "^3.0.0"
1242
+ },
1243
+ "engines": {
1244
+ "node": ">=4"
1245
+ }
1246
+ },
1247
+ "node_modules/supports-preserve-symlinks-flag": {
1248
+ "version": "1.0.0",
1249
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1250
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1251
+ "engines": {
1252
+ "node": ">= 0.4"
1253
+ },
1254
+ "funding": {
1255
+ "url": "https://github.com/sponsors/ljharb"
1256
+ }
1257
+ },
1258
+ "node_modules/sweetalert2": {
1259
+ "version": "11.10.6",
1260
+ "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.6.tgz",
1261
+ "integrity": "sha512-CINZPLZXZRSZqSOE7H7j1F7X8e8O1kLOiXPmtJn1DYxvXsKBr3d16d90+IcwTTs7dJww20h8r8QIxIwsLGX+6A==",
1262
+ "funding": {
1263
+ "type": "individual",
1264
+ "url": "https://github.com/sponsors/limonte"
1265
+ }
1266
+ },
1267
+ "node_modules/sweetalert2-react-content": {
1268
+ "version": "5.0.7",
1269
+ "resolved": "https://registry.npmjs.org/sweetalert2-react-content/-/sweetalert2-react-content-5.0.7.tgz",
1270
+ "integrity": "sha512-8Fk82Mpk45lFXpJWKIFF/lq8k/dJKDDQGFcuqVosaL/qRdViyAs5+u37LoTGfnOIvf+rfQB3PAXcp1XLLn+0ew==",
1271
+ "peerDependencies": {
1272
+ "react": "^18.0.0",
1273
+ "react-dom": "^18.0.0",
1274
+ "sweetalert2": "^11.0.0"
1275
+ }
1276
+ },
1277
+ "node_modules/to-fast-properties": {
1278
+ "version": "2.0.0",
1279
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1280
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1281
+ "engines": {
1282
+ "node": ">=4"
1283
+ }
1284
+ },
1285
+ "node_modules/tslib": {
1286
+ "version": "2.6.2",
1287
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
1288
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
1289
+ },
1290
+ "node_modules/typescript": {
1291
+ "version": "5.4.5",
1292
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
1293
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
1294
+ "dev": true,
1295
+ "bin": {
1296
+ "tsc": "bin/tsc",
1297
+ "tsserver": "bin/tsserver"
1298
+ },
1299
+ "engines": {
1300
+ "node": ">=14.17"
1301
+ }
1302
+ },
1303
+ "node_modules/update-browserslist-db": {
1304
+ "version": "1.0.13",
1305
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
1306
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
1307
+ "funding": [
1308
+ {
1309
+ "type": "opencollective",
1310
+ "url": "https://opencollective.com/browserslist"
1311
+ },
1312
+ {
1313
+ "type": "tidelift",
1314
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1315
+ },
1316
+ {
1317
+ "type": "github",
1318
+ "url": "https://github.com/sponsors/ai"
1319
+ }
1320
+ ],
1321
+ "peer": true,
1322
+ "dependencies": {
1323
+ "escalade": "^3.1.1",
1324
+ "picocolors": "^1.0.0"
1325
+ },
1326
+ "bin": {
1327
+ "update-browserslist-db": "cli.js"
1328
+ },
1329
+ "peerDependencies": {
1330
+ "browserslist": ">= 4.21.0"
1331
+ }
1332
+ },
1333
+ "node_modules/yallist": {
1334
+ "version": "3.1.1",
1335
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1336
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1337
+ "peer": true
1338
+ },
1339
+ "node_modules/yaml": {
1340
+ "version": "1.10.2",
1341
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
1342
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
1343
+ "engines": {
1344
+ "node": ">= 6"
1345
+ }
1346
+ }
1347
+ }
1348
+ }
package.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dependencies": {
3
+ "@anatoliygatt/heart-switch": "^1.0.13",
4
+ "@emotion/react": "^11.11.4",
5
+ "@emotion/styled": "^11.11.5",
6
+ "@react-sandbox/heart": "^1.1.0",
7
+ "framer-motion": "^11.1.1",
8
+ "react-heart": "^1.0.6",
9
+ "react-icons": "^5.0.1",
10
+ "sweetalert2": "^11.10.6",
11
+ "sweetalert2-react-content": "^5.0.7"
12
+ },
13
+ "devDependencies": {
14
+ "typescript": "^5.4.5"
15
+ }
16
+ }
penguins.csv DELETED
@@ -1,345 +0,0 @@
1
- Species,Island,Bill Length (mm),Bill Depth (mm),Flipper Length (mm),Body Mass (g),Sex,Year
2
- Adelie,Torgersen,39.1,18.7,181,3750,male,2007
3
- Adelie,Torgersen,39.5,17.4,186,3800,female,2007
4
- Adelie,Torgersen,40.3,18,195,3250,female,2007
5
- Adelie,Torgersen,NA,NA,NA,NA,NA,2007
6
- Adelie,Torgersen,36.7,19.3,193,3450,female,2007
7
- Adelie,Torgersen,39.3,20.6,190,3650,male,2007
8
- Adelie,Torgersen,38.9,17.8,181,3625,female,2007
9
- Adelie,Torgersen,39.2,19.6,195,4675,male,2007
10
- Adelie,Torgersen,34.1,18.1,193,3475,NA,2007
11
- Adelie,Torgersen,42,20.2,190,4250,NA,2007
12
- Adelie,Torgersen,37.8,17.1,186,3300,NA,2007
13
- Adelie,Torgersen,37.8,17.3,180,3700,NA,2007
14
- Adelie,Torgersen,41.1,17.6,182,3200,female,2007
15
- Adelie,Torgersen,38.6,21.2,191,3800,male,2007
16
- Adelie,Torgersen,34.6,21.1,198,4400,male,2007
17
- Adelie,Torgersen,36.6,17.8,185,3700,female,2007
18
- Adelie,Torgersen,38.7,19,195,3450,female,2007
19
- Adelie,Torgersen,42.5,20.7,197,4500,male,2007
20
- Adelie,Torgersen,34.4,18.4,184,3325,female,2007
21
- Adelie,Torgersen,46,21.5,194,4200,male,2007
22
- Adelie,Biscoe,37.8,18.3,174,3400,female,2007
23
- Adelie,Biscoe,37.7,18.7,180,3600,male,2007
24
- Adelie,Biscoe,35.9,19.2,189,3800,female,2007
25
- Adelie,Biscoe,38.2,18.1,185,3950,male,2007
26
- Adelie,Biscoe,38.8,17.2,180,3800,male,2007
27
- Adelie,Biscoe,35.3,18.9,187,3800,female,2007
28
- Adelie,Biscoe,40.6,18.6,183,3550,male,2007
29
- Adelie,Biscoe,40.5,17.9,187,3200,female,2007
30
- Adelie,Biscoe,37.9,18.6,172,3150,female,2007
31
- Adelie,Biscoe,40.5,18.9,180,3950,male,2007
32
- Adelie,Dream,39.5,16.7,178,3250,female,2007
33
- Adelie,Dream,37.2,18.1,178,3900,male,2007
34
- Adelie,Dream,39.5,17.8,188,3300,female,2007
35
- Adelie,Dream,40.9,18.9,184,3900,male,2007
36
- Adelie,Dream,36.4,17,195,3325,female,2007
37
- Adelie,Dream,39.2,21.1,196,4150,male,2007
38
- Adelie,Dream,38.8,20,190,3950,male,2007
39
- Adelie,Dream,42.2,18.5,180,3550,female,2007
40
- Adelie,Dream,37.6,19.3,181,3300,female,2007
41
- Adelie,Dream,39.8,19.1,184,4650,male,2007
42
- Adelie,Dream,36.5,18,182,3150,female,2007
43
- Adelie,Dream,40.8,18.4,195,3900,male,2007
44
- Adelie,Dream,36,18.5,186,3100,female,2007
45
- Adelie,Dream,44.1,19.7,196,4400,male,2007
46
- Adelie,Dream,37,16.9,185,3000,female,2007
47
- Adelie,Dream,39.6,18.8,190,4600,male,2007
48
- Adelie,Dream,41.1,19,182,3425,male,2007
49
- Adelie,Dream,37.5,18.9,179,2975,NA,2007
50
- Adelie,Dream,36,17.9,190,3450,female,2007
51
- Adelie,Dream,42.3,21.2,191,4150,male,2007
52
- Adelie,Biscoe,39.6,17.7,186,3500,female,2008
53
- Adelie,Biscoe,40.1,18.9,188,4300,male,2008
54
- Adelie,Biscoe,35,17.9,190,3450,female,2008
55
- Adelie,Biscoe,42,19.5,200,4050,male,2008
56
- Adelie,Biscoe,34.5,18.1,187,2900,female,2008
57
- Adelie,Biscoe,41.4,18.6,191,3700,male,2008
58
- Adelie,Biscoe,39,17.5,186,3550,female,2008
59
- Adelie,Biscoe,40.6,18.8,193,3800,male,2008
60
- Adelie,Biscoe,36.5,16.6,181,2850,female,2008
61
- Adelie,Biscoe,37.6,19.1,194,3750,male,2008
62
- Adelie,Biscoe,35.7,16.9,185,3150,female,2008
63
- Adelie,Biscoe,41.3,21.1,195,4400,male,2008
64
- Adelie,Biscoe,37.6,17,185,3600,female,2008
65
- Adelie,Biscoe,41.1,18.2,192,4050,male,2008
66
- Adelie,Biscoe,36.4,17.1,184,2850,female,2008
67
- Adelie,Biscoe,41.6,18,192,3950,male,2008
68
- Adelie,Biscoe,35.5,16.2,195,3350,female,2008
69
- Adelie,Biscoe,41.1,19.1,188,4100,male,2008
70
- Adelie,Torgersen,35.9,16.6,190,3050,female,2008
71
- Adelie,Torgersen,41.8,19.4,198,4450,male,2008
72
- Adelie,Torgersen,33.5,19,190,3600,female,2008
73
- Adelie,Torgersen,39.7,18.4,190,3900,male,2008
74
- Adelie,Torgersen,39.6,17.2,196,3550,female,2008
75
- Adelie,Torgersen,45.8,18.9,197,4150,male,2008
76
- Adelie,Torgersen,35.5,17.5,190,3700,female,2008
77
- Adelie,Torgersen,42.8,18.5,195,4250,male,2008
78
- Adelie,Torgersen,40.9,16.8,191,3700,female,2008
79
- Adelie,Torgersen,37.2,19.4,184,3900,male,2008
80
- Adelie,Torgersen,36.2,16.1,187,3550,female,2008
81
- Adelie,Torgersen,42.1,19.1,195,4000,male,2008
82
- Adelie,Torgersen,34.6,17.2,189,3200,female,2008
83
- Adelie,Torgersen,42.9,17.6,196,4700,male,2008
84
- Adelie,Torgersen,36.7,18.8,187,3800,female,2008
85
- Adelie,Torgersen,35.1,19.4,193,4200,male,2008
86
- Adelie,Dream,37.3,17.8,191,3350,female,2008
87
- Adelie,Dream,41.3,20.3,194,3550,male,2008
88
- Adelie,Dream,36.3,19.5,190,3800,male,2008
89
- Adelie,Dream,36.9,18.6,189,3500,female,2008
90
- Adelie,Dream,38.3,19.2,189,3950,male,2008
91
- Adelie,Dream,38.9,18.8,190,3600,female,2008
92
- Adelie,Dream,35.7,18,202,3550,female,2008
93
- Adelie,Dream,41.1,18.1,205,4300,male,2008
94
- Adelie,Dream,34,17.1,185,3400,female,2008
95
- Adelie,Dream,39.6,18.1,186,4450,male,2008
96
- Adelie,Dream,36.2,17.3,187,3300,female,2008
97
- Adelie,Dream,40.8,18.9,208,4300,male,2008
98
- Adelie,Dream,38.1,18.6,190,3700,female,2008
99
- Adelie,Dream,40.3,18.5,196,4350,male,2008
100
- Adelie,Dream,33.1,16.1,178,2900,female,2008
101
- Adelie,Dream,43.2,18.5,192,4100,male,2008
102
- Adelie,Biscoe,35,17.9,192,3725,female,2009
103
- Adelie,Biscoe,41,20,203,4725,male,2009
104
- Adelie,Biscoe,37.7,16,183,3075,female,2009
105
- Adelie,Biscoe,37.8,20,190,4250,male,2009
106
- Adelie,Biscoe,37.9,18.6,193,2925,female,2009
107
- Adelie,Biscoe,39.7,18.9,184,3550,male,2009
108
- Adelie,Biscoe,38.6,17.2,199,3750,female,2009
109
- Adelie,Biscoe,38.2,20,190,3900,male,2009
110
- Adelie,Biscoe,38.1,17,181,3175,female,2009
111
- Adelie,Biscoe,43.2,19,197,4775,male,2009
112
- Adelie,Biscoe,38.1,16.5,198,3825,female,2009
113
- Adelie,Biscoe,45.6,20.3,191,4600,male,2009
114
- Adelie,Biscoe,39.7,17.7,193,3200,female,2009
115
- Adelie,Biscoe,42.2,19.5,197,4275,male,2009
116
- Adelie,Biscoe,39.6,20.7,191,3900,female,2009
117
- Adelie,Biscoe,42.7,18.3,196,4075,male,2009
118
- Adelie,Torgersen,38.6,17,188,2900,female,2009
119
- Adelie,Torgersen,37.3,20.5,199,3775,male,2009
120
- Adelie,Torgersen,35.7,17,189,3350,female,2009
121
- Adelie,Torgersen,41.1,18.6,189,3325,male,2009
122
- Adelie,Torgersen,36.2,17.2,187,3150,female,2009
123
- Adelie,Torgersen,37.7,19.8,198,3500,male,2009
124
- Adelie,Torgersen,40.2,17,176,3450,female,2009
125
- Adelie,Torgersen,41.4,18.5,202,3875,male,2009
126
- Adelie,Torgersen,35.2,15.9,186,3050,female,2009
127
- Adelie,Torgersen,40.6,19,199,4000,male,2009
128
- Adelie,Torgersen,38.8,17.6,191,3275,female,2009
129
- Adelie,Torgersen,41.5,18.3,195,4300,male,2009
130
- Adelie,Torgersen,39,17.1,191,3050,female,2009
131
- Adelie,Torgersen,44.1,18,210,4000,male,2009
132
- Adelie,Torgersen,38.5,17.9,190,3325,female,2009
133
- Adelie,Torgersen,43.1,19.2,197,3500,male,2009
134
- Adelie,Dream,36.8,18.5,193,3500,female,2009
135
- Adelie,Dream,37.5,18.5,199,4475,male,2009
136
- Adelie,Dream,38.1,17.6,187,3425,female,2009
137
- Adelie,Dream,41.1,17.5,190,3900,male,2009
138
- Adelie,Dream,35.6,17.5,191,3175,female,2009
139
- Adelie,Dream,40.2,20.1,200,3975,male,2009
140
- Adelie,Dream,37,16.5,185,3400,female,2009
141
- Adelie,Dream,39.7,17.9,193,4250,male,2009
142
- Adelie,Dream,40.2,17.1,193,3400,female,2009
143
- Adelie,Dream,40.6,17.2,187,3475,male,2009
144
- Adelie,Dream,32.1,15.5,188,3050,female,2009
145
- Adelie,Dream,40.7,17,190,3725,male,2009
146
- Adelie,Dream,37.3,16.8,192,3000,female,2009
147
- Adelie,Dream,39,18.7,185,3650,male,2009
148
- Adelie,Dream,39.2,18.6,190,4250,male,2009
149
- Adelie,Dream,36.6,18.4,184,3475,female,2009
150
- Adelie,Dream,36,17.8,195,3450,female,2009
151
- Adelie,Dream,37.8,18.1,193,3750,male,2009
152
- Adelie,Dream,36,17.1,187,3700,female,2009
153
- Adelie,Dream,41.5,18.5,201,4000,male,2009
154
- Gentoo,Biscoe,46.1,13.2,211,4500,female,2007
155
- Gentoo,Biscoe,50,16.3,230,5700,male,2007
156
- Gentoo,Biscoe,48.7,14.1,210,4450,female,2007
157
- Gentoo,Biscoe,50,15.2,218,5700,male,2007
158
- Gentoo,Biscoe,47.6,14.5,215,5400,male,2007
159
- Gentoo,Biscoe,46.5,13.5,210,4550,female,2007
160
- Gentoo,Biscoe,45.4,14.6,211,4800,female,2007
161
- Gentoo,Biscoe,46.7,15.3,219,5200,male,2007
162
- Gentoo,Biscoe,43.3,13.4,209,4400,female,2007
163
- Gentoo,Biscoe,46.8,15.4,215,5150,male,2007
164
- Gentoo,Biscoe,40.9,13.7,214,4650,female,2007
165
- Gentoo,Biscoe,49,16.1,216,5550,male,2007
166
- Gentoo,Biscoe,45.5,13.7,214,4650,female,2007
167
- Gentoo,Biscoe,48.4,14.6,213,5850,male,2007
168
- Gentoo,Biscoe,45.8,14.6,210,4200,female,2007
169
- Gentoo,Biscoe,49.3,15.7,217,5850,male,2007
170
- Gentoo,Biscoe,42,13.5,210,4150,female,2007
171
- Gentoo,Biscoe,49.2,15.2,221,6300,male,2007
172
- Gentoo,Biscoe,46.2,14.5,209,4800,female,2007
173
- Gentoo,Biscoe,48.7,15.1,222,5350,male,2007
174
- Gentoo,Biscoe,50.2,14.3,218,5700,male,2007
175
- Gentoo,Biscoe,45.1,14.5,215,5000,female,2007
176
- Gentoo,Biscoe,46.5,14.5,213,4400,female,2007
177
- Gentoo,Biscoe,46.3,15.8,215,5050,male,2007
178
- Gentoo,Biscoe,42.9,13.1,215,5000,female,2007
179
- Gentoo,Biscoe,46.1,15.1,215,5100,male,2007
180
- Gentoo,Biscoe,44.5,14.3,216,4100,NA,2007
181
- Gentoo,Biscoe,47.8,15,215,5650,male,2007
182
- Gentoo,Biscoe,48.2,14.3,210,4600,female,2007
183
- Gentoo,Biscoe,50,15.3,220,5550,male,2007
184
- Gentoo,Biscoe,47.3,15.3,222,5250,male,2007
185
- Gentoo,Biscoe,42.8,14.2,209,4700,female,2007
186
- Gentoo,Biscoe,45.1,14.5,207,5050,female,2007
187
- Gentoo,Biscoe,59.6,17,230,6050,male,2007
188
- Gentoo,Biscoe,49.1,14.8,220,5150,female,2008
189
- Gentoo,Biscoe,48.4,16.3,220,5400,male,2008
190
- Gentoo,Biscoe,42.6,13.7,213,4950,female,2008
191
- Gentoo,Biscoe,44.4,17.3,219,5250,male,2008
192
- Gentoo,Biscoe,44,13.6,208,4350,female,2008
193
- Gentoo,Biscoe,48.7,15.7,208,5350,male,2008
194
- Gentoo,Biscoe,42.7,13.7,208,3950,female,2008
195
- Gentoo,Biscoe,49.6,16,225,5700,male,2008
196
- Gentoo,Biscoe,45.3,13.7,210,4300,female,2008
197
- Gentoo,Biscoe,49.6,15,216,4750,male,2008
198
- Gentoo,Biscoe,50.5,15.9,222,5550,male,2008
199
- Gentoo,Biscoe,43.6,13.9,217,4900,female,2008
200
- Gentoo,Biscoe,45.5,13.9,210,4200,female,2008
201
- Gentoo,Biscoe,50.5,15.9,225,5400,male,2008
202
- Gentoo,Biscoe,44.9,13.3,213,5100,female,2008
203
- Gentoo,Biscoe,45.2,15.8,215,5300,male,2008
204
- Gentoo,Biscoe,46.6,14.2,210,4850,female,2008
205
- Gentoo,Biscoe,48.5,14.1,220,5300,male,2008
206
- Gentoo,Biscoe,45.1,14.4,210,4400,female,2008
207
- Gentoo,Biscoe,50.1,15,225,5000,male,2008
208
- Gentoo,Biscoe,46.5,14.4,217,4900,female,2008
209
- Gentoo,Biscoe,45,15.4,220,5050,male,2008
210
- Gentoo,Biscoe,43.8,13.9,208,4300,female,2008
211
- Gentoo,Biscoe,45.5,15,220,5000,male,2008
212
- Gentoo,Biscoe,43.2,14.5,208,4450,female,2008
213
- Gentoo,Biscoe,50.4,15.3,224,5550,male,2008
214
- Gentoo,Biscoe,45.3,13.8,208,4200,female,2008
215
- Gentoo,Biscoe,46.2,14.9,221,5300,male,2008
216
- Gentoo,Biscoe,45.7,13.9,214,4400,female,2008
217
- Gentoo,Biscoe,54.3,15.7,231,5650,male,2008
218
- Gentoo,Biscoe,45.8,14.2,219,4700,female,2008
219
- Gentoo,Biscoe,49.8,16.8,230,5700,male,2008
220
- Gentoo,Biscoe,46.2,14.4,214,4650,NA,2008
221
- Gentoo,Biscoe,49.5,16.2,229,5800,male,2008
222
- Gentoo,Biscoe,43.5,14.2,220,4700,female,2008
223
- Gentoo,Biscoe,50.7,15,223,5550,male,2008
224
- Gentoo,Biscoe,47.7,15,216,4750,female,2008
225
- Gentoo,Biscoe,46.4,15.6,221,5000,male,2008
226
- Gentoo,Biscoe,48.2,15.6,221,5100,male,2008
227
- Gentoo,Biscoe,46.5,14.8,217,5200,female,2008
228
- Gentoo,Biscoe,46.4,15,216,4700,female,2008
229
- Gentoo,Biscoe,48.6,16,230,5800,male,2008
230
- Gentoo,Biscoe,47.5,14.2,209,4600,female,2008
231
- Gentoo,Biscoe,51.1,16.3,220,6000,male,2008
232
- Gentoo,Biscoe,45.2,13.8,215,4750,female,2008
233
- Gentoo,Biscoe,45.2,16.4,223,5950,male,2008
234
- Gentoo,Biscoe,49.1,14.5,212,4625,female,2009
235
- Gentoo,Biscoe,52.5,15.6,221,5450,male,2009
236
- Gentoo,Biscoe,47.4,14.6,212,4725,female,2009
237
- Gentoo,Biscoe,50,15.9,224,5350,male,2009
238
- Gentoo,Biscoe,44.9,13.8,212,4750,female,2009
239
- Gentoo,Biscoe,50.8,17.3,228,5600,male,2009
240
- Gentoo,Biscoe,43.4,14.4,218,4600,female,2009
241
- Gentoo,Biscoe,51.3,14.2,218,5300,male,2009
242
- Gentoo,Biscoe,47.5,14,212,4875,female,2009
243
- Gentoo,Biscoe,52.1,17,230,5550,male,2009
244
- Gentoo,Biscoe,47.5,15,218,4950,female,2009
245
- Gentoo,Biscoe,52.2,17.1,228,5400,male,2009
246
- Gentoo,Biscoe,45.5,14.5,212,4750,female,2009
247
- Gentoo,Biscoe,49.5,16.1,224,5650,male,2009
248
- Gentoo,Biscoe,44.5,14.7,214,4850,female,2009
249
- Gentoo,Biscoe,50.8,15.7,226,5200,male,2009
250
- Gentoo,Biscoe,49.4,15.8,216,4925,male,2009
251
- Gentoo,Biscoe,46.9,14.6,222,4875,female,2009
252
- Gentoo,Biscoe,48.4,14.4,203,4625,female,2009
253
- Gentoo,Biscoe,51.1,16.5,225,5250,male,2009
254
- Gentoo,Biscoe,48.5,15,219,4850,female,2009
255
- Gentoo,Biscoe,55.9,17,228,5600,male,2009
256
- Gentoo,Biscoe,47.2,15.5,215,4975,female,2009
257
- Gentoo,Biscoe,49.1,15,228,5500,male,2009
258
- Gentoo,Biscoe,47.3,13.8,216,4725,NA,2009
259
- Gentoo,Biscoe,46.8,16.1,215,5500,male,2009
260
- Gentoo,Biscoe,41.7,14.7,210,4700,female,2009
261
- Gentoo,Biscoe,53.4,15.8,219,5500,male,2009
262
- Gentoo,Biscoe,43.3,14,208,4575,female,2009
263
- Gentoo,Biscoe,48.1,15.1,209,5500,male,2009
264
- Gentoo,Biscoe,50.5,15.2,216,5000,female,2009
265
- Gentoo,Biscoe,49.8,15.9,229,5950,male,2009
266
- Gentoo,Biscoe,43.5,15.2,213,4650,female,2009
267
- Gentoo,Biscoe,51.5,16.3,230,5500,male,2009
268
- Gentoo,Biscoe,46.2,14.1,217,4375,female,2009
269
- Gentoo,Biscoe,55.1,16,230,5850,male,2009
270
- Gentoo,Biscoe,44.5,15.7,217,4875,NA,2009
271
- Gentoo,Biscoe,48.8,16.2,222,6000,male,2009
272
- Gentoo,Biscoe,47.2,13.7,214,4925,female,2009
273
- Gentoo,Biscoe,NA,NA,NA,NA,NA,2009
274
- Gentoo,Biscoe,46.8,14.3,215,4850,female,2009
275
- Gentoo,Biscoe,50.4,15.7,222,5750,male,2009
276
- Gentoo,Biscoe,45.2,14.8,212,5200,female,2009
277
- Gentoo,Biscoe,49.9,16.1,213,5400,male,2009
278
- Chinstrap,Dream,46.5,17.9,192,3500,female,2007
279
- Chinstrap,Dream,50,19.5,196,3900,male,2007
280
- Chinstrap,Dream,51.3,19.2,193,3650,male,2007
281
- Chinstrap,Dream,45.4,18.7,188,3525,female,2007
282
- Chinstrap,Dream,52.7,19.8,197,3725,male,2007
283
- Chinstrap,Dream,45.2,17.8,198,3950,female,2007
284
- Chinstrap,Dream,46.1,18.2,178,3250,female,2007
285
- Chinstrap,Dream,51.3,18.2,197,3750,male,2007
286
- Chinstrap,Dream,46,18.9,195,4150,female,2007
287
- Chinstrap,Dream,51.3,19.9,198,3700,male,2007
288
- Chinstrap,Dream,46.6,17.8,193,3800,female,2007
289
- Chinstrap,Dream,51.7,20.3,194,3775,male,2007
290
- Chinstrap,Dream,47,17.3,185,3700,female,2007
291
- Chinstrap,Dream,52,18.1,201,4050,male,2007
292
- Chinstrap,Dream,45.9,17.1,190,3575,female,2007
293
- Chinstrap,Dream,50.5,19.6,201,4050,male,2007
294
- Chinstrap,Dream,50.3,20,197,3300,male,2007
295
- Chinstrap,Dream,58,17.8,181,3700,female,2007
296
- Chinstrap,Dream,46.4,18.6,190,3450,female,2007
297
- Chinstrap,Dream,49.2,18.2,195,4400,male,2007
298
- Chinstrap,Dream,42.4,17.3,181,3600,female,2007
299
- Chinstrap,Dream,48.5,17.5,191,3400,male,2007
300
- Chinstrap,Dream,43.2,16.6,187,2900,female,2007
301
- Chinstrap,Dream,50.6,19.4,193,3800,male,2007
302
- Chinstrap,Dream,46.7,17.9,195,3300,female,2007
303
- Chinstrap,Dream,52,19,197,4150,male,2007
304
- Chinstrap,Dream,50.5,18.4,200,3400,female,2008
305
- Chinstrap,Dream,49.5,19,200,3800,male,2008
306
- Chinstrap,Dream,46.4,17.8,191,3700,female,2008
307
- Chinstrap,Dream,52.8,20,205,4550,male,2008
308
- Chinstrap,Dream,40.9,16.6,187,3200,female,2008
309
- Chinstrap,Dream,54.2,20.8,201,4300,male,2008
310
- Chinstrap,Dream,42.5,16.7,187,3350,female,2008
311
- Chinstrap,Dream,51,18.8,203,4100,male,2008
312
- Chinstrap,Dream,49.7,18.6,195,3600,male,2008
313
- Chinstrap,Dream,47.5,16.8,199,3900,female,2008
314
- Chinstrap,Dream,47.6,18.3,195,3850,female,2008
315
- Chinstrap,Dream,52,20.7,210,4800,male,2008
316
- Chinstrap,Dream,46.9,16.6,192,2700,female,2008
317
- Chinstrap,Dream,53.5,19.9,205,4500,male,2008
318
- Chinstrap,Dream,49,19.5,210,3950,male,2008
319
- Chinstrap,Dream,46.2,17.5,187,3650,female,2008
320
- Chinstrap,Dream,50.9,19.1,196,3550,male,2008
321
- Chinstrap,Dream,45.5,17,196,3500,female,2008
322
- Chinstrap,Dream,50.9,17.9,196,3675,female,2009
323
- Chinstrap,Dream,50.8,18.5,201,4450,male,2009
324
- Chinstrap,Dream,50.1,17.9,190,3400,female,2009
325
- Chinstrap,Dream,49,19.6,212,4300,male,2009
326
- Chinstrap,Dream,51.5,18.7,187,3250,male,2009
327
- Chinstrap,Dream,49.8,17.3,198,3675,female,2009
328
- Chinstrap,Dream,48.1,16.4,199,3325,female,2009
329
- Chinstrap,Dream,51.4,19,201,3950,male,2009
330
- Chinstrap,Dream,45.7,17.3,193,3600,female,2009
331
- Chinstrap,Dream,50.7,19.7,203,4050,male,2009
332
- Chinstrap,Dream,42.5,17.3,187,3350,female,2009
333
- Chinstrap,Dream,52.2,18.8,197,3450,male,2009
334
- Chinstrap,Dream,45.2,16.6,191,3250,female,2009
335
- Chinstrap,Dream,49.3,19.9,203,4050,male,2009
336
- Chinstrap,Dream,50.2,18.8,202,3800,male,2009
337
- Chinstrap,Dream,45.6,19.4,194,3525,female,2009
338
- Chinstrap,Dream,51.9,19.5,206,3950,male,2009
339
- Chinstrap,Dream,46.8,16.5,189,3650,female,2009
340
- Chinstrap,Dream,45.7,17,195,3650,female,2009
341
- Chinstrap,Dream,55.8,19.8,207,4000,male,2009
342
- Chinstrap,Dream,43.5,18.1,202,3400,female,2009
343
- Chinstrap,Dream,49.6,18.2,193,3775,male,2009
344
- Chinstrap,Dream,50.8,19,210,4100,male,2009
345
- Chinstrap,Dream,50.2,18.7,198,3775,female,2009
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
renv.lock ADDED
@@ -0,0 +1,2287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "R": {
3
+ "Version": "4.2.2",
4
+ "Repositories": [
5
+ {
6
+ "Name": "CRAN",
7
+ "URL": "http://cran.rstudio.com"
8
+ }
9
+ ]
10
+ },
11
+ "Packages": {
12
+ "BH": {
13
+ "Package": "BH",
14
+ "Version": "1.84.0-0",
15
+ "Source": "Repository",
16
+ "Repository": "CRAN",
17
+ "Hash": "a8235afbcd6316e6e91433ea47661013"
18
+ },
19
+ "ISOcodes": {
20
+ "Package": "ISOcodes",
21
+ "Version": "2024.02.12",
22
+ "Source": "Repository",
23
+ "Repository": "CRAN",
24
+ "Requirements": [
25
+ "R"
26
+ ],
27
+ "Hash": "8882a4410a254e41eab064b0330fea56"
28
+ },
29
+ "MASS": {
30
+ "Package": "MASS",
31
+ "Version": "7.3-58.2",
32
+ "Source": "Repository",
33
+ "Repository": "CRAN",
34
+ "Requirements": [
35
+ "R",
36
+ "grDevices",
37
+ "graphics",
38
+ "methods",
39
+ "stats",
40
+ "utils"
41
+ ],
42
+ "Hash": "e02d1a0f6122fd3e634b25b433704344"
43
+ },
44
+ "Matrix": {
45
+ "Package": "Matrix",
46
+ "Version": "1.5-3",
47
+ "Source": "Repository",
48
+ "Repository": "CRAN",
49
+ "Requirements": [
50
+ "R",
51
+ "graphics",
52
+ "grid",
53
+ "lattice",
54
+ "methods",
55
+ "stats",
56
+ "utils"
57
+ ],
58
+ "Hash": "4006dffe49958d2dd591c17e61e60591"
59
+ },
60
+ "R.cache": {
61
+ "Package": "R.cache",
62
+ "Version": "0.16.0",
63
+ "Source": "Repository",
64
+ "Repository": "CRAN",
65
+ "Requirements": [
66
+ "R",
67
+ "R.methodsS3",
68
+ "R.oo",
69
+ "R.utils",
70
+ "digest",
71
+ "utils"
72
+ ],
73
+ "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8"
74
+ },
75
+ "R.methodsS3": {
76
+ "Package": "R.methodsS3",
77
+ "Version": "1.8.2",
78
+ "Source": "Repository",
79
+ "Repository": "CRAN",
80
+ "Requirements": [
81
+ "R",
82
+ "utils"
83
+ ],
84
+ "Hash": "278c286fd6e9e75d0c2e8f731ea445c8"
85
+ },
86
+ "R.oo": {
87
+ "Package": "R.oo",
88
+ "Version": "1.26.0",
89
+ "Source": "Repository",
90
+ "Repository": "CRAN",
91
+ "Requirements": [
92
+ "R",
93
+ "R.methodsS3",
94
+ "methods",
95
+ "utils"
96
+ ],
97
+ "Hash": "4fed809e53ddb5407b3da3d0f572e591"
98
+ },
99
+ "R.utils": {
100
+ "Package": "R.utils",
101
+ "Version": "2.12.3",
102
+ "Source": "Repository",
103
+ "Repository": "CRAN",
104
+ "Requirements": [
105
+ "R",
106
+ "R.methodsS3",
107
+ "R.oo",
108
+ "methods",
109
+ "tools",
110
+ "utils"
111
+ ],
112
+ "Hash": "3dc2829b790254bfba21e60965787651"
113
+ },
114
+ "R6": {
115
+ "Package": "R6",
116
+ "Version": "2.5.1",
117
+ "Source": "Repository",
118
+ "Repository": "CRAN",
119
+ "Requirements": [
120
+ "R"
121
+ ],
122
+ "Hash": "470851b6d5d0ac559e9d01bb352b4021"
123
+ },
124
+ "RColorBrewer": {
125
+ "Package": "RColorBrewer",
126
+ "Version": "1.1-3",
127
+ "Source": "Repository",
128
+ "Repository": "CRAN",
129
+ "Requirements": [
130
+ "R"
131
+ ],
132
+ "Hash": "45f0398006e83a5b10b72a90663d8d8c"
133
+ },
134
+ "RCurl": {
135
+ "Package": "RCurl",
136
+ "Version": "1.98-1.14",
137
+ "Source": "Repository",
138
+ "Repository": "CRAN",
139
+ "Requirements": [
140
+ "R",
141
+ "bitops",
142
+ "methods"
143
+ ],
144
+ "Hash": "47f648d288079d0c696804ad4e55197e"
145
+ },
146
+ "Rcpp": {
147
+ "Package": "Rcpp",
148
+ "Version": "1.0.12",
149
+ "Source": "Repository",
150
+ "Repository": "CRAN",
151
+ "Requirements": [
152
+ "methods",
153
+ "utils"
154
+ ],
155
+ "Hash": "5ea2700d21e038ace58269ecdbeb9ec0"
156
+ },
157
+ "RcppArmadillo": {
158
+ "Package": "RcppArmadillo",
159
+ "Version": "0.12.8.1.0",
160
+ "Source": "Repository",
161
+ "Repository": "CRAN",
162
+ "Requirements": [
163
+ "R",
164
+ "Rcpp",
165
+ "methods",
166
+ "stats",
167
+ "utils"
168
+ ],
169
+ "Hash": "e78bbbb81a5dcd71a4bd3268d6ede0b1"
170
+ },
171
+ "RcppParallel": {
172
+ "Package": "RcppParallel",
173
+ "Version": "5.1.7",
174
+ "Source": "Repository",
175
+ "Repository": "CRAN",
176
+ "Requirements": [
177
+ "R"
178
+ ],
179
+ "Hash": "a45594a00f5dbb073d5ec9f48592a08a"
180
+ },
181
+ "RcppProgress": {
182
+ "Package": "RcppProgress",
183
+ "Version": "0.4.2",
184
+ "Source": "Repository",
185
+ "Repository": "CRAN",
186
+ "Hash": "1c0aa18b97e6aaa17f93b8b866c0ace5"
187
+ },
188
+ "RcppTOML": {
189
+ "Package": "RcppTOML",
190
+ "Version": "0.2.2",
191
+ "Source": "Repository",
192
+ "Repository": "CRAN",
193
+ "Requirements": [
194
+ "R",
195
+ "Rcpp"
196
+ ],
197
+ "Hash": "c232938949fcd8126034419cc529333a"
198
+ },
199
+ "Rttf2pt1": {
200
+ "Package": "Rttf2pt1",
201
+ "Version": "1.3.12",
202
+ "Source": "Repository",
203
+ "Repository": "CRAN",
204
+ "Requirements": [
205
+ "R"
206
+ ],
207
+ "Hash": "a60168d094ca7e4de5106d60001c3964"
208
+ },
209
+ "SnowballC": {
210
+ "Package": "SnowballC",
211
+ "Version": "0.7.1",
212
+ "Source": "Repository",
213
+ "Repository": "CRAN",
214
+ "Hash": "46da3912f69e3e6258a033802c4af32e"
215
+ },
216
+ "antiword": {
217
+ "Package": "antiword",
218
+ "Version": "1.3.3",
219
+ "Source": "Repository",
220
+ "Repository": "CRAN",
221
+ "Requirements": [
222
+ "sys"
223
+ ],
224
+ "Hash": "539cc509762f4aa6815a29db264c47d3"
225
+ },
226
+ "anytime": {
227
+ "Package": "anytime",
228
+ "Version": "0.3.9",
229
+ "Source": "Repository",
230
+ "Repository": "CRAN",
231
+ "Requirements": [
232
+ "BH",
233
+ "R",
234
+ "Rcpp"
235
+ ],
236
+ "Hash": "74a64813f17b492da9c6afda6b128e3d"
237
+ },
238
+ "arules": {
239
+ "Package": "arules",
240
+ "Version": "1.7-7",
241
+ "Source": "Repository",
242
+ "Repository": "CRAN",
243
+ "Requirements": [
244
+ "Matrix",
245
+ "R",
246
+ "generics",
247
+ "graphics",
248
+ "methods",
249
+ "stats",
250
+ "utils"
251
+ ],
252
+ "Hash": "3405a7596dc330dc0d8a90332b4d3074"
253
+ },
254
+ "askpass": {
255
+ "Package": "askpass",
256
+ "Version": "1.2.0",
257
+ "Source": "Repository",
258
+ "Repository": "CRAN",
259
+ "Requirements": [
260
+ "sys"
261
+ ],
262
+ "Hash": "cad6cf7f1d5f6e906700b9d3e718c796"
263
+ },
264
+ "attempt": {
265
+ "Package": "attempt",
266
+ "Version": "0.3.1",
267
+ "Source": "Repository",
268
+ "Repository": "CRAN",
269
+ "Requirements": [
270
+ "rlang"
271
+ ],
272
+ "Hash": "d7421bb5dfeb2676b9e4a5a60c2fcfd2"
273
+ },
274
+ "backports": {
275
+ "Package": "backports",
276
+ "Version": "1.4.1",
277
+ "Source": "Repository",
278
+ "Repository": "CRAN",
279
+ "Requirements": [
280
+ "R"
281
+ ],
282
+ "Hash": "c39fbec8a30d23e721980b8afb31984c"
283
+ },
284
+ "base64enc": {
285
+ "Package": "base64enc",
286
+ "Version": "0.1-3",
287
+ "Source": "Repository",
288
+ "Repository": "CRAN",
289
+ "Requirements": [
290
+ "R"
291
+ ],
292
+ "Hash": "543776ae6848fde2f48ff3816d0628bc"
293
+ },
294
+ "bit": {
295
+ "Package": "bit",
296
+ "Version": "4.0.5",
297
+ "Source": "Repository",
298
+ "Repository": "CRAN",
299
+ "Requirements": [
300
+ "R"
301
+ ],
302
+ "Hash": "d242abec29412ce988848d0294b208fd"
303
+ },
304
+ "bit64": {
305
+ "Package": "bit64",
306
+ "Version": "4.0.5",
307
+ "Source": "Repository",
308
+ "Repository": "CRAN",
309
+ "Requirements": [
310
+ "R",
311
+ "bit",
312
+ "methods",
313
+ "stats",
314
+ "utils"
315
+ ],
316
+ "Hash": "9fe98599ca456d6552421db0d6772d8f"
317
+ },
318
+ "bitops": {
319
+ "Package": "bitops",
320
+ "Version": "1.0-7",
321
+ "Source": "Repository",
322
+ "Repository": "CRAN",
323
+ "Hash": "b7d8d8ee39869c18d8846a184dd8a1af"
324
+ },
325
+ "box": {
326
+ "Package": "box",
327
+ "Version": "1.2.0",
328
+ "Source": "Repository",
329
+ "Repository": "CRAN",
330
+ "Requirements": [
331
+ "R",
332
+ "tools"
333
+ ],
334
+ "Hash": "d94049c1d9446b0abb413fde9e82a505"
335
+ },
336
+ "brio": {
337
+ "Package": "brio",
338
+ "Version": "1.1.4",
339
+ "Source": "Repository",
340
+ "Repository": "CRAN",
341
+ "Requirements": [
342
+ "R"
343
+ ],
344
+ "Hash": "68bd2b066e1fe780bbf62fc8bcc36de3"
345
+ },
346
+ "bsicons": {
347
+ "Package": "bsicons",
348
+ "Version": "0.1.2",
349
+ "Source": "Repository",
350
+ "Repository": "CRAN",
351
+ "Requirements": [
352
+ "R",
353
+ "cli",
354
+ "htmltools",
355
+ "rlang",
356
+ "utils"
357
+ ],
358
+ "Hash": "d8f892fbd94d0b9b1f6d688b05b8633c"
359
+ },
360
+ "bslib": {
361
+ "Package": "bslib",
362
+ "Version": "0.6.1",
363
+ "Source": "Repository",
364
+ "Repository": "CRAN",
365
+ "Requirements": [
366
+ "R",
367
+ "base64enc",
368
+ "cachem",
369
+ "grDevices",
370
+ "htmltools",
371
+ "jquerylib",
372
+ "jsonlite",
373
+ "lifecycle",
374
+ "memoise",
375
+ "mime",
376
+ "rlang",
377
+ "sass"
378
+ ],
379
+ "Hash": "c0d8599494bc7fb408cd206bbdd9cab0"
380
+ },
381
+ "cachem": {
382
+ "Package": "cachem",
383
+ "Version": "1.0.8",
384
+ "Source": "Repository",
385
+ "Repository": "CRAN",
386
+ "Requirements": [
387
+ "fastmap",
388
+ "rlang"
389
+ ],
390
+ "Hash": "c35768291560ce302c0a6589f92e837d"
391
+ },
392
+ "callr": {
393
+ "Package": "callr",
394
+ "Version": "3.7.3",
395
+ "Source": "Repository",
396
+ "Repository": "CRAN",
397
+ "Requirements": [
398
+ "R",
399
+ "R6",
400
+ "processx",
401
+ "utils"
402
+ ],
403
+ "Hash": "9b2191ede20fa29828139b9900922e51"
404
+ },
405
+ "cellranger": {
406
+ "Package": "cellranger",
407
+ "Version": "1.1.0",
408
+ "Source": "Repository",
409
+ "Repository": "CRAN",
410
+ "Requirements": [
411
+ "R",
412
+ "rematch",
413
+ "tibble"
414
+ ],
415
+ "Hash": "f61dbaec772ccd2e17705c1e872e9e7c"
416
+ },
417
+ "cli": {
418
+ "Package": "cli",
419
+ "Version": "3.6.2",
420
+ "Source": "Repository",
421
+ "Repository": "CRAN",
422
+ "Requirements": [
423
+ "R",
424
+ "utils"
425
+ ],
426
+ "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52"
427
+ },
428
+ "clipr": {
429
+ "Package": "clipr",
430
+ "Version": "0.8.0",
431
+ "Source": "Repository",
432
+ "Repository": "CRAN",
433
+ "Requirements": [
434
+ "utils"
435
+ ],
436
+ "Hash": "3f038e5ac7f41d4ac41ce658c85e3042"
437
+ },
438
+ "coda": {
439
+ "Package": "coda",
440
+ "Version": "0.19-4.1",
441
+ "Source": "Repository",
442
+ "Repository": "CRAN",
443
+ "Requirements": [
444
+ "R",
445
+ "lattice"
446
+ ],
447
+ "Hash": "af436915c590afc6fffc3ce3a5be1569"
448
+ },
449
+ "codetools": {
450
+ "Package": "codetools",
451
+ "Version": "0.2-19",
452
+ "Source": "Repository",
453
+ "Repository": "CRAN",
454
+ "Requirements": [
455
+ "R"
456
+ ],
457
+ "Hash": "c089a619a7fae175d149d89164f8c7d8"
458
+ },
459
+ "colorspace": {
460
+ "Package": "colorspace",
461
+ "Version": "2.1-0",
462
+ "Source": "Repository",
463
+ "Repository": "CRAN",
464
+ "Requirements": [
465
+ "R",
466
+ "grDevices",
467
+ "graphics",
468
+ "methods",
469
+ "stats"
470
+ ],
471
+ "Hash": "f20c47fd52fae58b4e377c37bb8c335b"
472
+ },
473
+ "commonmark": {
474
+ "Package": "commonmark",
475
+ "Version": "1.9.1",
476
+ "Source": "Repository",
477
+ "Repository": "CRAN",
478
+ "Hash": "5d8225445acb167abf7797de48b2ee3c"
479
+ },
480
+ "config": {
481
+ "Package": "config",
482
+ "Version": "0.3.2",
483
+ "Source": "Repository",
484
+ "Repository": "CRAN",
485
+ "Requirements": [
486
+ "yaml"
487
+ ],
488
+ "Hash": "8b7222e9d9eb5178eea545c0c4d33fc2"
489
+ },
490
+ "cpp11": {
491
+ "Package": "cpp11",
492
+ "Version": "0.4.7",
493
+ "Source": "Repository",
494
+ "Repository": "CRAN",
495
+ "Requirements": [
496
+ "R"
497
+ ],
498
+ "Hash": "5a295d7d963cc5035284dcdbaf334f4e"
499
+ },
500
+ "crayon": {
501
+ "Package": "crayon",
502
+ "Version": "1.5.2",
503
+ "Source": "Repository",
504
+ "Repository": "CRAN",
505
+ "Requirements": [
506
+ "grDevices",
507
+ "methods",
508
+ "utils"
509
+ ],
510
+ "Hash": "e8a1e41acf02548751f45c718d55aa6a"
511
+ },
512
+ "curl": {
513
+ "Package": "curl",
514
+ "Version": "5.2.1",
515
+ "Source": "Repository",
516
+ "Repository": "CRAN",
517
+ "Requirements": [
518
+ "R"
519
+ ],
520
+ "Hash": "411ca2c03b1ce5f548345d2fc2685f7a"
521
+ },
522
+ "cyclocomp": {
523
+ "Package": "cyclocomp",
524
+ "Version": "1.1.1",
525
+ "Source": "Repository",
526
+ "Repository": "CRAN",
527
+ "Requirements": [
528
+ "callr",
529
+ "crayon",
530
+ "desc",
531
+ "remotes",
532
+ "withr"
533
+ ],
534
+ "Hash": "cdc4a473222b0112d4df0bcfbed12d44"
535
+ },
536
+ "data.table": {
537
+ "Package": "data.table",
538
+ "Version": "1.15.2",
539
+ "Source": "Repository",
540
+ "Repository": "CRAN",
541
+ "Requirements": [
542
+ "R",
543
+ "methods"
544
+ ],
545
+ "Hash": "536dfe4ac4093b5d115caed7a1a7223b"
546
+ },
547
+ "desc": {
548
+ "Package": "desc",
549
+ "Version": "1.4.3",
550
+ "Source": "Repository",
551
+ "Repository": "CRAN",
552
+ "Requirements": [
553
+ "R",
554
+ "R6",
555
+ "cli",
556
+ "utils"
557
+ ],
558
+ "Hash": "99b79fcbd6c4d1ce087f5c5c758b384f"
559
+ },
560
+ "diffobj": {
561
+ "Package": "diffobj",
562
+ "Version": "0.3.5",
563
+ "Source": "Repository",
564
+ "Repository": "CRAN",
565
+ "Requirements": [
566
+ "R",
567
+ "crayon",
568
+ "methods",
569
+ "stats",
570
+ "tools",
571
+ "utils"
572
+ ],
573
+ "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8"
574
+ },
575
+ "digest": {
576
+ "Package": "digest",
577
+ "Version": "0.6.34",
578
+ "Source": "Repository",
579
+ "Repository": "CRAN",
580
+ "Requirements": [
581
+ "R",
582
+ "utils"
583
+ ],
584
+ "Hash": "7ede2ee9ea8d3edbf1ca84c1e333ad1a"
585
+ },
586
+ "dplyr": {
587
+ "Package": "dplyr",
588
+ "Version": "1.1.4",
589
+ "Source": "Repository",
590
+ "Repository": "CRAN",
591
+ "Requirements": [
592
+ "R",
593
+ "R6",
594
+ "cli",
595
+ "generics",
596
+ "glue",
597
+ "lifecycle",
598
+ "magrittr",
599
+ "methods",
600
+ "pillar",
601
+ "rlang",
602
+ "tibble",
603
+ "tidyselect",
604
+ "utils",
605
+ "vctrs"
606
+ ],
607
+ "Hash": "fedd9d00c2944ff00a0e2696ccf048ec"
608
+ },
609
+ "ellipsis": {
610
+ "Package": "ellipsis",
611
+ "Version": "0.3.2",
612
+ "Source": "Repository",
613
+ "Repository": "CRAN",
614
+ "Requirements": [
615
+ "R",
616
+ "rlang"
617
+ ],
618
+ "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077"
619
+ },
620
+ "evaluate": {
621
+ "Package": "evaluate",
622
+ "Version": "0.23",
623
+ "Source": "Repository",
624
+ "Repository": "CRAN",
625
+ "Requirements": [
626
+ "R",
627
+ "methods"
628
+ ],
629
+ "Hash": "daf4a1246be12c1fa8c7705a0935c1a0"
630
+ },
631
+ "extrafont": {
632
+ "Package": "extrafont",
633
+ "Version": "0.19",
634
+ "Source": "Repository",
635
+ "Repository": "CRAN",
636
+ "Requirements": [
637
+ "R",
638
+ "Rttf2pt1",
639
+ "extrafontdb",
640
+ "grDevices",
641
+ "utils"
642
+ ],
643
+ "Hash": "03d9939b37164f34e0522fef13e63158"
644
+ },
645
+ "extrafontdb": {
646
+ "Package": "extrafontdb",
647
+ "Version": "1.0",
648
+ "Source": "Repository",
649
+ "Repository": "CRAN",
650
+ "Requirements": [
651
+ "R"
652
+ ],
653
+ "Hash": "a861555ddec7451c653b40e713166c6f"
654
+ },
655
+ "fansi": {
656
+ "Package": "fansi",
657
+ "Version": "1.0.6",
658
+ "Source": "Repository",
659
+ "Repository": "CRAN",
660
+ "Requirements": [
661
+ "R",
662
+ "grDevices",
663
+ "utils"
664
+ ],
665
+ "Hash": "962174cf2aeb5b9eea581522286a911f"
666
+ },
667
+ "farver": {
668
+ "Package": "farver",
669
+ "Version": "2.1.1",
670
+ "Source": "Repository",
671
+ "Repository": "CRAN",
672
+ "Hash": "8106d78941f34855c440ddb946b8f7a5"
673
+ },
674
+ "fastmap": {
675
+ "Package": "fastmap",
676
+ "Version": "1.1.1",
677
+ "Source": "Repository",
678
+ "Repository": "CRAN",
679
+ "Hash": "f7736a18de97dea803bde0a2daaafb27"
680
+ },
681
+ "fastmatch": {
682
+ "Package": "fastmatch",
683
+ "Version": "1.1-4",
684
+ "Source": "Repository",
685
+ "Repository": "CRAN",
686
+ "Requirements": [
687
+ "R"
688
+ ],
689
+ "Hash": "8c406b7284bbaef08e01c6687367f195"
690
+ },
691
+ "float": {
692
+ "Package": "float",
693
+ "Version": "0.3-2",
694
+ "Source": "Repository",
695
+ "Repository": "CRAN",
696
+ "Requirements": [
697
+ "R",
698
+ "methods",
699
+ "tools",
700
+ "utils"
701
+ ],
702
+ "Hash": "0d644aed82556eaf30e1601599592e47"
703
+ },
704
+ "fontawesome": {
705
+ "Package": "fontawesome",
706
+ "Version": "0.5.2",
707
+ "Source": "Repository",
708
+ "Repository": "CRAN",
709
+ "Requirements": [
710
+ "R",
711
+ "htmltools",
712
+ "rlang"
713
+ ],
714
+ "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d"
715
+ },
716
+ "fs": {
717
+ "Package": "fs",
718
+ "Version": "1.6.3",
719
+ "Source": "Repository",
720
+ "Repository": "CRAN",
721
+ "Requirements": [
722
+ "R",
723
+ "methods"
724
+ ],
725
+ "Hash": "47b5f30c720c23999b913a1a635cf0bb"
726
+ },
727
+ "gargoyle": {
728
+ "Package": "gargoyle",
729
+ "Version": "0.0.1",
730
+ "Source": "GitHub",
731
+ "RemoteType": "github",
732
+ "RemoteHost": "api.github.com",
733
+ "RemoteUsername": "ColinFay",
734
+ "RemoteRepo": "gargoyle",
735
+ "RemoteRef": "master",
736
+ "RemoteSha": "83234de417b9b0b39be9b8f1556e5df1968624b2",
737
+ "Requirements": [
738
+ "attempt",
739
+ "shiny"
740
+ ],
741
+ "Hash": "3d6d52fc8522ff4bbef4245815b364ee"
742
+ },
743
+ "generics": {
744
+ "Package": "generics",
745
+ "Version": "0.1.3",
746
+ "Source": "Repository",
747
+ "Repository": "CRAN",
748
+ "Requirements": [
749
+ "R",
750
+ "methods"
751
+ ],
752
+ "Hash": "15e9634c0fcd294799e9b2e929ed1b86"
753
+ },
754
+ "ggplot2": {
755
+ "Package": "ggplot2",
756
+ "Version": "3.5.0",
757
+ "Source": "Repository",
758
+ "Repository": "CRAN",
759
+ "Requirements": [
760
+ "MASS",
761
+ "R",
762
+ "cli",
763
+ "glue",
764
+ "grDevices",
765
+ "grid",
766
+ "gtable",
767
+ "isoband",
768
+ "lifecycle",
769
+ "mgcv",
770
+ "rlang",
771
+ "scales",
772
+ "stats",
773
+ "tibble",
774
+ "vctrs",
775
+ "withr"
776
+ ],
777
+ "Hash": "52ef83f93f74833007f193b2d4c159a2"
778
+ },
779
+ "ggrepel": {
780
+ "Package": "ggrepel",
781
+ "Version": "0.9.5",
782
+ "Source": "Repository",
783
+ "Repository": "CRAN",
784
+ "Requirements": [
785
+ "R",
786
+ "Rcpp",
787
+ "ggplot2",
788
+ "grid",
789
+ "rlang",
790
+ "scales",
791
+ "withr"
792
+ ],
793
+ "Hash": "cc3361e234c4a5050e29697d675764aa"
794
+ },
795
+ "glue": {
796
+ "Package": "glue",
797
+ "Version": "1.7.0",
798
+ "Source": "Repository",
799
+ "Repository": "CRAN",
800
+ "Requirements": [
801
+ "R",
802
+ "methods"
803
+ ],
804
+ "Hash": "e0b3a53876554bd45879e596cdb10a52"
805
+ },
806
+ "gtable": {
807
+ "Package": "gtable",
808
+ "Version": "0.3.4",
809
+ "Source": "Repository",
810
+ "Repository": "CRAN",
811
+ "Requirements": [
812
+ "R",
813
+ "cli",
814
+ "glue",
815
+ "grid",
816
+ "lifecycle",
817
+ "rlang"
818
+ ],
819
+ "Hash": "b29cf3031f49b04ab9c852c912547eef"
820
+ },
821
+ "here": {
822
+ "Package": "here",
823
+ "Version": "1.0.1",
824
+ "Source": "Repository",
825
+ "Repository": "CRAN",
826
+ "Requirements": [
827
+ "rprojroot"
828
+ ],
829
+ "Hash": "24b224366f9c2e7534d2344d10d59211"
830
+ },
831
+ "highr": {
832
+ "Package": "highr",
833
+ "Version": "0.10",
834
+ "Source": "Repository",
835
+ "Repository": "CRAN",
836
+ "Requirements": [
837
+ "R",
838
+ "xfun"
839
+ ],
840
+ "Hash": "06230136b2d2b9ba5805e1963fa6e890"
841
+ },
842
+ "hms": {
843
+ "Package": "hms",
844
+ "Version": "1.1.3",
845
+ "Source": "Repository",
846
+ "Repository": "CRAN",
847
+ "Requirements": [
848
+ "lifecycle",
849
+ "methods",
850
+ "pkgconfig",
851
+ "rlang",
852
+ "vctrs"
853
+ ],
854
+ "Hash": "b59377caa7ed00fa41808342002138f9"
855
+ },
856
+ "htmltools": {
857
+ "Package": "htmltools",
858
+ "Version": "0.5.7",
859
+ "Source": "Repository",
860
+ "Repository": "CRAN",
861
+ "Requirements": [
862
+ "R",
863
+ "base64enc",
864
+ "digest",
865
+ "ellipsis",
866
+ "fastmap",
867
+ "grDevices",
868
+ "rlang",
869
+ "utils"
870
+ ],
871
+ "Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f"
872
+ },
873
+ "httpuv": {
874
+ "Package": "httpuv",
875
+ "Version": "1.6.14",
876
+ "Source": "Repository",
877
+ "Repository": "CRAN",
878
+ "Requirements": [
879
+ "R",
880
+ "R6",
881
+ "Rcpp",
882
+ "later",
883
+ "promises",
884
+ "utils"
885
+ ],
886
+ "Hash": "16abeb167dbf511f8cc0552efaf05bab"
887
+ },
888
+ "httr": {
889
+ "Package": "httr",
890
+ "Version": "1.4.7",
891
+ "Source": "Repository",
892
+ "Repository": "CRAN",
893
+ "Requirements": [
894
+ "R",
895
+ "R6",
896
+ "curl",
897
+ "jsonlite",
898
+ "mime",
899
+ "openssl"
900
+ ],
901
+ "Hash": "ac107251d9d9fd72f0ca8049988f1d7f"
902
+ },
903
+ "igraph": {
904
+ "Package": "igraph",
905
+ "Version": "2.0.3",
906
+ "Source": "Repository",
907
+ "Repository": "CRAN",
908
+ "Requirements": [
909
+ "Matrix",
910
+ "R",
911
+ "cli",
912
+ "cpp11",
913
+ "grDevices",
914
+ "graphics",
915
+ "lifecycle",
916
+ "magrittr",
917
+ "methods",
918
+ "pkgconfig",
919
+ "rlang",
920
+ "stats",
921
+ "utils",
922
+ "vctrs"
923
+ ],
924
+ "Hash": "c3b7d801d722e26e4cd888e042bf9af5"
925
+ },
926
+ "irlba": {
927
+ "Package": "irlba",
928
+ "Version": "2.3.5.1",
929
+ "Source": "Repository",
930
+ "Repository": "CRAN",
931
+ "Requirements": [
932
+ "Matrix",
933
+ "R",
934
+ "methods",
935
+ "stats"
936
+ ],
937
+ "Hash": "acb06a47b732c6251afd16e19c3201ff"
938
+ },
939
+ "isoband": {
940
+ "Package": "isoband",
941
+ "Version": "0.2.7",
942
+ "Source": "Repository",
943
+ "Repository": "CRAN",
944
+ "Requirements": [
945
+ "grid",
946
+ "utils"
947
+ ],
948
+ "Hash": "0080607b4a1a7b28979aecef976d8bc2"
949
+ },
950
+ "jquerylib": {
951
+ "Package": "jquerylib",
952
+ "Version": "0.1.4",
953
+ "Source": "Repository",
954
+ "Repository": "CRAN",
955
+ "Requirements": [
956
+ "htmltools"
957
+ ],
958
+ "Hash": "5aab57a3bd297eee1c1d862735972182"
959
+ },
960
+ "jsonlite": {
961
+ "Package": "jsonlite",
962
+ "Version": "1.8.8",
963
+ "Source": "Repository",
964
+ "Repository": "CRAN",
965
+ "Requirements": [
966
+ "methods"
967
+ ],
968
+ "Hash": "e1b9c55281c5adc4dd113652d9e26768"
969
+ },
970
+ "knitr": {
971
+ "Package": "knitr",
972
+ "Version": "1.45",
973
+ "Source": "Repository",
974
+ "Repository": "CRAN",
975
+ "Requirements": [
976
+ "R",
977
+ "evaluate",
978
+ "highr",
979
+ "methods",
980
+ "tools",
981
+ "xfun",
982
+ "yaml"
983
+ ],
984
+ "Hash": "1ec462871063897135c1bcbe0fc8f07d"
985
+ },
986
+ "labeling": {
987
+ "Package": "labeling",
988
+ "Version": "0.4.3",
989
+ "Source": "Repository",
990
+ "Repository": "CRAN",
991
+ "Requirements": [
992
+ "graphics",
993
+ "stats"
994
+ ],
995
+ "Hash": "b64ec208ac5bc1852b285f665d6368b3"
996
+ },
997
+ "later": {
998
+ "Package": "later",
999
+ "Version": "1.3.2",
1000
+ "Source": "Repository",
1001
+ "Repository": "CRAN",
1002
+ "Requirements": [
1003
+ "Rcpp",
1004
+ "rlang"
1005
+ ],
1006
+ "Hash": "a3e051d405326b8b0012377434c62b37"
1007
+ },
1008
+ "lattice": {
1009
+ "Package": "lattice",
1010
+ "Version": "0.20-45",
1011
+ "Source": "Repository",
1012
+ "Repository": "CRAN",
1013
+ "Requirements": [
1014
+ "R",
1015
+ "grDevices",
1016
+ "graphics",
1017
+ "grid",
1018
+ "stats",
1019
+ "utils"
1020
+ ],
1021
+ "Hash": "b64cdbb2b340437c4ee047a1f4c4377b"
1022
+ },
1023
+ "lazyeval": {
1024
+ "Package": "lazyeval",
1025
+ "Version": "0.2.2",
1026
+ "Source": "Repository",
1027
+ "Repository": "CRAN",
1028
+ "Requirements": [
1029
+ "R"
1030
+ ],
1031
+ "Hash": "d908914ae53b04d4c0c0fd72ecc35370"
1032
+ },
1033
+ "lifecycle": {
1034
+ "Package": "lifecycle",
1035
+ "Version": "1.0.4",
1036
+ "Source": "Repository",
1037
+ "Repository": "CRAN",
1038
+ "Requirements": [
1039
+ "R",
1040
+ "cli",
1041
+ "glue",
1042
+ "rlang"
1043
+ ],
1044
+ "Hash": "b8552d117e1b808b09a832f589b79035"
1045
+ },
1046
+ "lintr": {
1047
+ "Package": "lintr",
1048
+ "Version": "3.1.1",
1049
+ "Source": "Repository",
1050
+ "Repository": "CRAN",
1051
+ "Requirements": [
1052
+ "R",
1053
+ "backports",
1054
+ "codetools",
1055
+ "cyclocomp",
1056
+ "digest",
1057
+ "glue",
1058
+ "knitr",
1059
+ "rex",
1060
+ "stats",
1061
+ "utils",
1062
+ "xml2",
1063
+ "xmlparsedata"
1064
+ ],
1065
+ "Hash": "93e9379f4be8c0bf1862dfc7f720193e"
1066
+ },
1067
+ "logger": {
1068
+ "Package": "logger",
1069
+ "Version": "0.3.0",
1070
+ "Source": "Repository",
1071
+ "Repository": "CRAN",
1072
+ "Requirements": [
1073
+ "utils"
1074
+ ],
1075
+ "Hash": "c145edf05cc128e6ffcfa5d872c46329"
1076
+ },
1077
+ "magrittr": {
1078
+ "Package": "magrittr",
1079
+ "Version": "2.0.3",
1080
+ "Source": "Repository",
1081
+ "Repository": "CRAN",
1082
+ "Requirements": [
1083
+ "R"
1084
+ ],
1085
+ "Hash": "7ce2733a9826b3aeb1775d56fd305472"
1086
+ },
1087
+ "matrixStats": {
1088
+ "Package": "matrixStats",
1089
+ "Version": "1.3.0",
1090
+ "Source": "Repository",
1091
+ "Repository": "CRAN",
1092
+ "Requirements": [
1093
+ "R"
1094
+ ],
1095
+ "Hash": "4b3ea27a19d669c0405b38134d89a9d1"
1096
+ },
1097
+ "memoise": {
1098
+ "Package": "memoise",
1099
+ "Version": "2.0.1",
1100
+ "Source": "Repository",
1101
+ "Repository": "CRAN",
1102
+ "Requirements": [
1103
+ "cachem",
1104
+ "rlang"
1105
+ ],
1106
+ "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c"
1107
+ },
1108
+ "mgcv": {
1109
+ "Package": "mgcv",
1110
+ "Version": "1.8-41",
1111
+ "Source": "Repository",
1112
+ "Repository": "CRAN",
1113
+ "Requirements": [
1114
+ "Matrix",
1115
+ "R",
1116
+ "graphics",
1117
+ "methods",
1118
+ "nlme",
1119
+ "splines",
1120
+ "stats",
1121
+ "utils"
1122
+ ],
1123
+ "Hash": "6b3904f13346742caa3e82dd0303d4ad"
1124
+ },
1125
+ "mime": {
1126
+ "Package": "mime",
1127
+ "Version": "0.12",
1128
+ "Source": "Repository",
1129
+ "Repository": "CRAN",
1130
+ "Requirements": [
1131
+ "tools"
1132
+ ],
1133
+ "Hash": "18e9c28c1d3ca1560ce30658b22ce104"
1134
+ },
1135
+ "munsell": {
1136
+ "Package": "munsell",
1137
+ "Version": "0.5.0",
1138
+ "Source": "Repository",
1139
+ "Repository": "CRAN",
1140
+ "Requirements": [
1141
+ "colorspace",
1142
+ "methods"
1143
+ ],
1144
+ "Hash": "6dfe8bf774944bd5595785e3229d8771"
1145
+ },
1146
+ "ndjson": {
1147
+ "Package": "ndjson",
1148
+ "Version": "0.9.0",
1149
+ "Source": "Repository",
1150
+ "Repository": "CRAN",
1151
+ "Requirements": [
1152
+ "R",
1153
+ "Rcpp",
1154
+ "data.table",
1155
+ "tibble"
1156
+ ],
1157
+ "Hash": "9d50f0353c90f841dbaf81c1e6c39098"
1158
+ },
1159
+ "network": {
1160
+ "Package": "network",
1161
+ "Version": "1.18.2",
1162
+ "Source": "Repository",
1163
+ "Repository": "CRAN",
1164
+ "Requirements": [
1165
+ "R",
1166
+ "magrittr",
1167
+ "statnet.common",
1168
+ "stats",
1169
+ "tibble",
1170
+ "utils"
1171
+ ],
1172
+ "Hash": "5e4fda9d3ed359d1b155d46a36681191"
1173
+ },
1174
+ "nlme": {
1175
+ "Package": "nlme",
1176
+ "Version": "3.1-162",
1177
+ "Source": "Repository",
1178
+ "Repository": "CRAN",
1179
+ "Requirements": [
1180
+ "R",
1181
+ "graphics",
1182
+ "lattice",
1183
+ "stats",
1184
+ "utils"
1185
+ ],
1186
+ "Hash": "0984ce8da8da9ead8643c5cbbb60f83e"
1187
+ },
1188
+ "nsyllable": {
1189
+ "Package": "nsyllable",
1190
+ "Version": "1.0.1",
1191
+ "Source": "Repository",
1192
+ "Repository": "CRAN",
1193
+ "Requirements": [
1194
+ "R"
1195
+ ],
1196
+ "Hash": "1b4597ff3ffce588ac437a7ca69b0fc1"
1197
+ },
1198
+ "openssl": {
1199
+ "Package": "openssl",
1200
+ "Version": "2.1.1",
1201
+ "Source": "Repository",
1202
+ "Repository": "CRAN",
1203
+ "Requirements": [
1204
+ "askpass"
1205
+ ],
1206
+ "Hash": "2a0dc8c6adfb6f032e4d4af82d258ab5"
1207
+ },
1208
+ "pdftools": {
1209
+ "Package": "pdftools",
1210
+ "Version": "3.4.0",
1211
+ "Source": "Repository",
1212
+ "Repository": "CRAN",
1213
+ "Requirements": [
1214
+ "Rcpp",
1215
+ "qpdf"
1216
+ ],
1217
+ "Hash": "9f04cfdc668ad1149d865a2996ac2045"
1218
+ },
1219
+ "pillar": {
1220
+ "Package": "pillar",
1221
+ "Version": "1.9.0",
1222
+ "Source": "Repository",
1223
+ "Repository": "CRAN",
1224
+ "Requirements": [
1225
+ "cli",
1226
+ "fansi",
1227
+ "glue",
1228
+ "lifecycle",
1229
+ "rlang",
1230
+ "utf8",
1231
+ "utils",
1232
+ "vctrs"
1233
+ ],
1234
+ "Hash": "15da5a8412f317beeee6175fbc76f4bb"
1235
+ },
1236
+ "pkgbuild": {
1237
+ "Package": "pkgbuild",
1238
+ "Version": "1.4.3",
1239
+ "Source": "Repository",
1240
+ "Repository": "CRAN",
1241
+ "Requirements": [
1242
+ "R",
1243
+ "R6",
1244
+ "callr",
1245
+ "cli",
1246
+ "desc",
1247
+ "processx"
1248
+ ],
1249
+ "Hash": "c0143443203205e6a2760ce553dafc24"
1250
+ },
1251
+ "pkgconfig": {
1252
+ "Package": "pkgconfig",
1253
+ "Version": "2.0.3",
1254
+ "Source": "Repository",
1255
+ "Repository": "CRAN",
1256
+ "Requirements": [
1257
+ "utils"
1258
+ ],
1259
+ "Hash": "01f28d4278f15c76cddbea05899c5d6f"
1260
+ },
1261
+ "pkgload": {
1262
+ "Package": "pkgload",
1263
+ "Version": "1.3.4",
1264
+ "Source": "Repository",
1265
+ "Repository": "CRAN",
1266
+ "Requirements": [
1267
+ "R",
1268
+ "cli",
1269
+ "crayon",
1270
+ "desc",
1271
+ "fs",
1272
+ "glue",
1273
+ "methods",
1274
+ "pkgbuild",
1275
+ "rlang",
1276
+ "rprojroot",
1277
+ "utils",
1278
+ "withr"
1279
+ ],
1280
+ "Hash": "876c618df5ae610be84356d5d7a5d124"
1281
+ },
1282
+ "png": {
1283
+ "Package": "png",
1284
+ "Version": "0.1-8",
1285
+ "Source": "Repository",
1286
+ "Repository": "CRAN",
1287
+ "Requirements": [
1288
+ "R"
1289
+ ],
1290
+ "Hash": "bd54ba8a0a5faded999a7aab6e46b374"
1291
+ },
1292
+ "praise": {
1293
+ "Package": "praise",
1294
+ "Version": "1.0.0",
1295
+ "Source": "Repository",
1296
+ "Repository": "CRAN",
1297
+ "Hash": "a555924add98c99d2f411e37e7d25e9f"
1298
+ },
1299
+ "prettyunits": {
1300
+ "Package": "prettyunits",
1301
+ "Version": "1.2.0",
1302
+ "Source": "Repository",
1303
+ "Repository": "CRAN",
1304
+ "Requirements": [
1305
+ "R"
1306
+ ],
1307
+ "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7"
1308
+ },
1309
+ "processx": {
1310
+ "Package": "processx",
1311
+ "Version": "3.8.3",
1312
+ "Source": "Repository",
1313
+ "Repository": "CRAN",
1314
+ "Requirements": [
1315
+ "R",
1316
+ "R6",
1317
+ "ps",
1318
+ "utils"
1319
+ ],
1320
+ "Hash": "82d48b1aec56084d9438dbf98087a7e9"
1321
+ },
1322
+ "progress": {
1323
+ "Package": "progress",
1324
+ "Version": "1.2.3",
1325
+ "Source": "Repository",
1326
+ "Repository": "CRAN",
1327
+ "Requirements": [
1328
+ "R",
1329
+ "R6",
1330
+ "crayon",
1331
+ "hms",
1332
+ "prettyunits"
1333
+ ],
1334
+ "Hash": "f4625e061cb2865f111b47ff163a5ca6"
1335
+ },
1336
+ "promises": {
1337
+ "Package": "promises",
1338
+ "Version": "1.2.1",
1339
+ "Source": "Repository",
1340
+ "Repository": "CRAN",
1341
+ "Requirements": [
1342
+ "R6",
1343
+ "Rcpp",
1344
+ "fastmap",
1345
+ "later",
1346
+ "magrittr",
1347
+ "rlang",
1348
+ "stats"
1349
+ ],
1350
+ "Hash": "0d8a15c9d000970ada1ab21405387dee"
1351
+ },
1352
+ "proxy": {
1353
+ "Package": "proxy",
1354
+ "Version": "0.4-27",
1355
+ "Source": "Repository",
1356
+ "Repository": "CRAN",
1357
+ "Requirements": [
1358
+ "R",
1359
+ "stats",
1360
+ "utils"
1361
+ ],
1362
+ "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e"
1363
+ },
1364
+ "proxyC": {
1365
+ "Package": "proxyC",
1366
+ "Version": "0.3.4",
1367
+ "Source": "Repository",
1368
+ "Repository": "CRAN",
1369
+ "Requirements": [
1370
+ "Matrix",
1371
+ "R",
1372
+ "Rcpp",
1373
+ "RcppArmadillo",
1374
+ "RcppParallel",
1375
+ "methods"
1376
+ ],
1377
+ "Hash": "85d5f69c20fa130178707741006c96c1"
1378
+ },
1379
+ "ps": {
1380
+ "Package": "ps",
1381
+ "Version": "1.7.6",
1382
+ "Source": "Repository",
1383
+ "Repository": "CRAN",
1384
+ "Requirements": [
1385
+ "R",
1386
+ "utils"
1387
+ ],
1388
+ "Hash": "dd2b9319ee0656c8acf45c7f40c59de7"
1389
+ },
1390
+ "purrr": {
1391
+ "Package": "purrr",
1392
+ "Version": "1.0.2",
1393
+ "Source": "Repository",
1394
+ "Repository": "CRAN",
1395
+ "Requirements": [
1396
+ "R",
1397
+ "cli",
1398
+ "lifecycle",
1399
+ "magrittr",
1400
+ "rlang",
1401
+ "vctrs"
1402
+ ],
1403
+ "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc"
1404
+ },
1405
+ "qpdf": {
1406
+ "Package": "qpdf",
1407
+ "Version": "1.3.2",
1408
+ "Source": "Repository",
1409
+ "Repository": "CRAN",
1410
+ "Requirements": [
1411
+ "Rcpp",
1412
+ "askpass",
1413
+ "curl"
1414
+ ],
1415
+ "Hash": "e233fd211c74cb9297f4ab898ea2c18a"
1416
+ },
1417
+ "quanteda": {
1418
+ "Package": "quanteda",
1419
+ "Version": "4.0.0",
1420
+ "Source": "GitHub",
1421
+ "RemoteType": "github",
1422
+ "RemoteHost": "api.github.com",
1423
+ "RemoteUsername": "quanteda",
1424
+ "RemoteRepo": "quanteda",
1425
+ "RemoteRef": "master",
1426
+ "RemoteSha": "36a041704018e9ef927e14d8eb8c531389744fbc",
1427
+ "Requirements": [
1428
+ "Matrix",
1429
+ "R",
1430
+ "Rcpp",
1431
+ "RcppArmadillo",
1432
+ "RcppParallel",
1433
+ "SnowballC",
1434
+ "fastmatch",
1435
+ "jsonlite",
1436
+ "lifecycle",
1437
+ "magrittr",
1438
+ "methods",
1439
+ "stopwords",
1440
+ "stringi",
1441
+ "xml2",
1442
+ "yaml"
1443
+ ],
1444
+ "Hash": "33b35b797c3081cf1ffb1709116993b2"
1445
+ },
1446
+ "quanteda.corpora": {
1447
+ "Package": "quanteda.corpora",
1448
+ "Version": "0.9.2",
1449
+ "Source": "GitHub",
1450
+ "RemoteType": "github",
1451
+ "RemoteHost": "api.github.com",
1452
+ "RemoteUsername": "quanteda",
1453
+ "RemoteRepo": "quanteda.corpora",
1454
+ "RemoteRef": "master",
1455
+ "RemoteSha": "ec4b76d841afc9a734cc0351b1fa87236c83b456",
1456
+ "Requirements": [
1457
+ "R",
1458
+ "digest"
1459
+ ],
1460
+ "Hash": "d4f4905a55115ec6818b69314db84658"
1461
+ },
1462
+ "quanteda.textplots": {
1463
+ "Package": "quanteda.textplots",
1464
+ "Version": "0.94.4",
1465
+ "Source": "GitHub",
1466
+ "RemoteType": "github",
1467
+ "RemoteHost": "api.github.com",
1468
+ "RemoteUsername": "quanteda",
1469
+ "RemoteRepo": "quanteda.textplots",
1470
+ "RemoteRef": "master",
1471
+ "RemoteSha": "066c78ea11cfe1f529719dbd8b33d2318b1b562b",
1472
+ "Requirements": [
1473
+ "Matrix",
1474
+ "RColorBrewer",
1475
+ "Rcpp",
1476
+ "extrafont",
1477
+ "ggplot2",
1478
+ "ggrepel",
1479
+ "grid",
1480
+ "igraph",
1481
+ "methods",
1482
+ "network",
1483
+ "quanteda",
1484
+ "sna",
1485
+ "stringi"
1486
+ ],
1487
+ "Hash": "8a530e6eb66a9dacad36b6392e312877"
1488
+ },
1489
+ "quanteda.textstats": {
1490
+ "Package": "quanteda.textstats",
1491
+ "Version": "0.96.5",
1492
+ "Source": "GitHub",
1493
+ "RemoteType": "github",
1494
+ "RemoteHost": "api.github.com",
1495
+ "RemoteUsername": "quanteda",
1496
+ "RemoteRepo": "quanteda.textstats",
1497
+ "RemoteRef": "master",
1498
+ "RemoteSha": "68a848903b08837b969c4928d427a4ae86bdde6d",
1499
+ "Requirements": [
1500
+ "Matrix",
1501
+ "R",
1502
+ "Rcpp",
1503
+ "RcppArmadillo",
1504
+ "RcppParallel",
1505
+ "methods",
1506
+ "nsyllable",
1507
+ "proxyC",
1508
+ "quanteda",
1509
+ "stringi"
1510
+ ],
1511
+ "Hash": "e2bd15dc9e38cbf4adb67300daa08916"
1512
+ },
1513
+ "rappdirs": {
1514
+ "Package": "rappdirs",
1515
+ "Version": "0.3.3",
1516
+ "Source": "Repository",
1517
+ "Repository": "CRAN",
1518
+ "Requirements": [
1519
+ "R"
1520
+ ],
1521
+ "Hash": "5e3c5dc0b071b21fa128676560dbe94d"
1522
+ },
1523
+ "readODS": {
1524
+ "Package": "readODS",
1525
+ "Version": "2.2.0",
1526
+ "Source": "Repository",
1527
+ "Repository": "CRAN",
1528
+ "Requirements": [
1529
+ "R",
1530
+ "cellranger",
1531
+ "cpp11",
1532
+ "readr",
1533
+ "stringi",
1534
+ "tibble",
1535
+ "tools",
1536
+ "vctrs",
1537
+ "zip"
1538
+ ],
1539
+ "Hash": "79c0f23a27909659c1a2d62048c15096"
1540
+ },
1541
+ "readr": {
1542
+ "Package": "readr",
1543
+ "Version": "2.1.5",
1544
+ "Source": "Repository",
1545
+ "Repository": "CRAN",
1546
+ "Requirements": [
1547
+ "R",
1548
+ "R6",
1549
+ "cli",
1550
+ "clipr",
1551
+ "cpp11",
1552
+ "crayon",
1553
+ "hms",
1554
+ "lifecycle",
1555
+ "methods",
1556
+ "rlang",
1557
+ "tibble",
1558
+ "tzdb",
1559
+ "utils",
1560
+ "vroom"
1561
+ ],
1562
+ "Hash": "9de96463d2117f6ac49980577939dfb3"
1563
+ },
1564
+ "readtext": {
1565
+ "Package": "readtext",
1566
+ "Version": "0.91",
1567
+ "Source": "GitHub",
1568
+ "RemoteType": "github",
1569
+ "RemoteHost": "api.github.com",
1570
+ "RemoteUsername": "quanteda",
1571
+ "RemoteRepo": "readtext",
1572
+ "RemoteRef": "master",
1573
+ "RemoteSha": "0f54d14bc79529477326bd63effc8b28f2c9a7dc",
1574
+ "Requirements": [
1575
+ "R",
1576
+ "antiword",
1577
+ "data.table",
1578
+ "digest",
1579
+ "httr",
1580
+ "jsonlite",
1581
+ "pdftools",
1582
+ "pillar",
1583
+ "readODS",
1584
+ "readxl",
1585
+ "streamR",
1586
+ "stringi",
1587
+ "striprtf",
1588
+ "utils",
1589
+ "xml2"
1590
+ ],
1591
+ "Hash": "1e8b60b4bbdca927fe75e4564a1a8727"
1592
+ },
1593
+ "readxl": {
1594
+ "Package": "readxl",
1595
+ "Version": "1.4.3",
1596
+ "Source": "Repository",
1597
+ "Repository": "CRAN",
1598
+ "Requirements": [
1599
+ "R",
1600
+ "cellranger",
1601
+ "cpp11",
1602
+ "progress",
1603
+ "tibble",
1604
+ "utils"
1605
+ ],
1606
+ "Hash": "8cf9c239b96df1bbb133b74aef77ad0a"
1607
+ },
1608
+ "recommenderlab": {
1609
+ "Package": "recommenderlab",
1610
+ "Version": "1.0.6",
1611
+ "Source": "Repository",
1612
+ "Repository": "CRAN",
1613
+ "Requirements": [
1614
+ "Matrix",
1615
+ "R",
1616
+ "arules",
1617
+ "irlba",
1618
+ "matrixStats",
1619
+ "methods",
1620
+ "proxy",
1621
+ "recosystem",
1622
+ "registry",
1623
+ "stats",
1624
+ "utils"
1625
+ ],
1626
+ "Hash": "053afc94674539edcfe176e592772f64"
1627
+ },
1628
+ "recosystem": {
1629
+ "Package": "recosystem",
1630
+ "Version": "0.5.1",
1631
+ "Source": "Repository",
1632
+ "Repository": "CRAN",
1633
+ "Requirements": [
1634
+ "R",
1635
+ "Rcpp",
1636
+ "RcppProgress",
1637
+ "float",
1638
+ "methods"
1639
+ ],
1640
+ "Hash": "5255c9331887a7fe293a1d7824a39e34"
1641
+ },
1642
+ "registry": {
1643
+ "Package": "registry",
1644
+ "Version": "0.5-1",
1645
+ "Source": "Repository",
1646
+ "Repository": "CRAN",
1647
+ "Requirements": [
1648
+ "R",
1649
+ "utils"
1650
+ ],
1651
+ "Hash": "1c9935f4f14c6c096c9c9072ddee59f1"
1652
+ },
1653
+ "rematch": {
1654
+ "Package": "rematch",
1655
+ "Version": "2.0.0",
1656
+ "Source": "Repository",
1657
+ "Repository": "CRAN",
1658
+ "Hash": "cbff1b666c6fa6d21202f07e2318d4f1"
1659
+ },
1660
+ "rematch2": {
1661
+ "Package": "rematch2",
1662
+ "Version": "2.1.2",
1663
+ "Source": "Repository",
1664
+ "Repository": "CRAN",
1665
+ "Requirements": [
1666
+ "tibble"
1667
+ ],
1668
+ "Hash": "76c9e04c712a05848ae7a23d2f170a40"
1669
+ },
1670
+ "remotes": {
1671
+ "Package": "remotes",
1672
+ "Version": "2.4.2.1",
1673
+ "Source": "Repository",
1674
+ "Repository": "CRAN",
1675
+ "Requirements": [
1676
+ "R",
1677
+ "methods",
1678
+ "stats",
1679
+ "tools",
1680
+ "utils"
1681
+ ],
1682
+ "Hash": "63d15047eb239f95160112bcadc4fcb9"
1683
+ },
1684
+ "renv": {
1685
+ "Package": "renv",
1686
+ "Version": "1.0.3",
1687
+ "Source": "Repository",
1688
+ "Repository": "CRAN",
1689
+ "Requirements": [
1690
+ "utils"
1691
+ ],
1692
+ "Hash": "41b847654f567341725473431dd0d5ab"
1693
+ },
1694
+ "reticulate": {
1695
+ "Package": "reticulate",
1696
+ "Version": "1.35.0",
1697
+ "Source": "Repository",
1698
+ "Repository": "CRAN",
1699
+ "Requirements": [
1700
+ "Matrix",
1701
+ "R",
1702
+ "Rcpp",
1703
+ "RcppTOML",
1704
+ "graphics",
1705
+ "here",
1706
+ "jsonlite",
1707
+ "methods",
1708
+ "png",
1709
+ "rappdirs",
1710
+ "rlang",
1711
+ "utils",
1712
+ "withr"
1713
+ ],
1714
+ "Hash": "90be16b53b955990db4aa355c03d85eb"
1715
+ },
1716
+ "rex": {
1717
+ "Package": "rex",
1718
+ "Version": "1.2.1",
1719
+ "Source": "Repository",
1720
+ "Repository": "CRAN",
1721
+ "Requirements": [
1722
+ "lazyeval"
1723
+ ],
1724
+ "Hash": "ae34cd56890607370665bee5bd17812f"
1725
+ },
1726
+ "rhino": {
1727
+ "Package": "rhino",
1728
+ "Version": "1.7.0",
1729
+ "Source": "Repository",
1730
+ "Repository": "CRAN",
1731
+ "Requirements": [
1732
+ "R",
1733
+ "box",
1734
+ "cli",
1735
+ "config",
1736
+ "fs",
1737
+ "glue",
1738
+ "lintr",
1739
+ "logger",
1740
+ "purrr",
1741
+ "renv",
1742
+ "rstudioapi",
1743
+ "sass",
1744
+ "shiny",
1745
+ "styler",
1746
+ "testthat",
1747
+ "utils",
1748
+ "withr",
1749
+ "xml2",
1750
+ "yaml"
1751
+ ],
1752
+ "Hash": "59ee79b26dd590b08dd1a3111d093832"
1753
+ },
1754
+ "rjson": {
1755
+ "Package": "rjson",
1756
+ "Version": "0.2.21",
1757
+ "Source": "Repository",
1758
+ "Repository": "CRAN",
1759
+ "Requirements": [
1760
+ "R"
1761
+ ],
1762
+ "Hash": "f9da75e6444e95a1baf8ca24909d63b9"
1763
+ },
1764
+ "rlang": {
1765
+ "Package": "rlang",
1766
+ "Version": "1.1.3",
1767
+ "Source": "Repository",
1768
+ "Repository": "CRAN",
1769
+ "Requirements": [
1770
+ "R",
1771
+ "utils"
1772
+ ],
1773
+ "Hash": "42548638fae05fd9a9b5f3f437fbbbe2"
1774
+ },
1775
+ "rprojroot": {
1776
+ "Package": "rprojroot",
1777
+ "Version": "2.0.4",
1778
+ "Source": "Repository",
1779
+ "Repository": "CRAN",
1780
+ "Requirements": [
1781
+ "R"
1782
+ ],
1783
+ "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144"
1784
+ },
1785
+ "rstudioapi": {
1786
+ "Package": "rstudioapi",
1787
+ "Version": "0.15.0",
1788
+ "Source": "Repository",
1789
+ "Repository": "CRAN",
1790
+ "Hash": "5564500e25cffad9e22244ced1379887"
1791
+ },
1792
+ "sass": {
1793
+ "Package": "sass",
1794
+ "Version": "0.4.8",
1795
+ "Source": "Repository",
1796
+ "Repository": "CRAN",
1797
+ "Requirements": [
1798
+ "R6",
1799
+ "fs",
1800
+ "htmltools",
1801
+ "rappdirs",
1802
+ "rlang"
1803
+ ],
1804
+ "Hash": "168f9353c76d4c4b0a0bbf72e2c2d035"
1805
+ },
1806
+ "scales": {
1807
+ "Package": "scales",
1808
+ "Version": "1.3.0",
1809
+ "Source": "Repository",
1810
+ "Repository": "CRAN",
1811
+ "Requirements": [
1812
+ "R",
1813
+ "R6",
1814
+ "RColorBrewer",
1815
+ "cli",
1816
+ "farver",
1817
+ "glue",
1818
+ "labeling",
1819
+ "lifecycle",
1820
+ "munsell",
1821
+ "rlang",
1822
+ "viridisLite"
1823
+ ],
1824
+ "Hash": "c19df082ba346b0ffa6f833e92de34d1"
1825
+ },
1826
+ "shiny": {
1827
+ "Package": "shiny",
1828
+ "Version": "1.8.0",
1829
+ "Source": "Repository",
1830
+ "Repository": "CRAN",
1831
+ "Requirements": [
1832
+ "R",
1833
+ "R6",
1834
+ "bslib",
1835
+ "cachem",
1836
+ "commonmark",
1837
+ "crayon",
1838
+ "ellipsis",
1839
+ "fastmap",
1840
+ "fontawesome",
1841
+ "glue",
1842
+ "grDevices",
1843
+ "htmltools",
1844
+ "httpuv",
1845
+ "jsonlite",
1846
+ "later",
1847
+ "lifecycle",
1848
+ "methods",
1849
+ "mime",
1850
+ "promises",
1851
+ "rlang",
1852
+ "sourcetools",
1853
+ "tools",
1854
+ "utils",
1855
+ "withr",
1856
+ "xtable"
1857
+ ],
1858
+ "Hash": "3a1f41807d648a908e3c7f0334bf85e6"
1859
+ },
1860
+ "shiny.react": {
1861
+ "Package": "shiny.react",
1862
+ "Version": "0.3.0",
1863
+ "Source": "Repository",
1864
+ "Repository": "CRAN",
1865
+ "Requirements": [
1866
+ "glue",
1867
+ "htmltools",
1868
+ "jsonlite",
1869
+ "logger",
1870
+ "purrr",
1871
+ "rlang",
1872
+ "shiny"
1873
+ ],
1874
+ "Hash": "ef9e3966d3cd63ea006296bd7b7d4dcb"
1875
+ },
1876
+ "shinyWidgets": {
1877
+ "Package": "shinyWidgets",
1878
+ "Version": "0.8.2",
1879
+ "Source": "Repository",
1880
+ "Repository": "CRAN",
1881
+ "Requirements": [
1882
+ "R",
1883
+ "anytime",
1884
+ "bslib",
1885
+ "grDevices",
1886
+ "htmltools",
1887
+ "jsonlite",
1888
+ "rlang",
1889
+ "sass",
1890
+ "shiny"
1891
+ ],
1892
+ "Hash": "88289640c8206dc810ea9cb87bd58ffc"
1893
+ },
1894
+ "sna": {
1895
+ "Package": "sna",
1896
+ "Version": "2.7-2",
1897
+ "Source": "Repository",
1898
+ "Repository": "CRAN",
1899
+ "Requirements": [
1900
+ "R",
1901
+ "network",
1902
+ "statnet.common",
1903
+ "utils"
1904
+ ],
1905
+ "Hash": "050b4098cef7fa1827c5c199559fde1f"
1906
+ },
1907
+ "sourcetools": {
1908
+ "Package": "sourcetools",
1909
+ "Version": "0.1.7-1",
1910
+ "Source": "Repository",
1911
+ "Repository": "CRAN",
1912
+ "Requirements": [
1913
+ "R"
1914
+ ],
1915
+ "Hash": "5f5a7629f956619d519205ec475fe647"
1916
+ },
1917
+ "spacyr": {
1918
+ "Package": "spacyr",
1919
+ "Version": "1.3.0",
1920
+ "Source": "GitHub",
1921
+ "RemoteType": "github",
1922
+ "RemoteHost": "api.github.com",
1923
+ "RemoteUsername": "quanteda",
1924
+ "RemoteRepo": "spacyr",
1925
+ "RemoteRef": "master",
1926
+ "RemoteSha": "bba48c93ca5c078ba031a150cbb11d7168db23ca",
1927
+ "Requirements": [
1928
+ "R",
1929
+ "data.table",
1930
+ "methods",
1931
+ "reticulate"
1932
+ ],
1933
+ "Hash": "11ac64aab9e14e92b3adae8bfa07f59a"
1934
+ },
1935
+ "statnet.common": {
1936
+ "Package": "statnet.common",
1937
+ "Version": "4.9.0",
1938
+ "Source": "Repository",
1939
+ "Repository": "CRAN",
1940
+ "Requirements": [
1941
+ "R",
1942
+ "coda",
1943
+ "methods",
1944
+ "parallel",
1945
+ "tools",
1946
+ "utils"
1947
+ ],
1948
+ "Hash": "be35aebf512f7b31de12200d5c3d1d67"
1949
+ },
1950
+ "stopwords": {
1951
+ "Package": "stopwords",
1952
+ "Version": "2.3",
1953
+ "Source": "Repository",
1954
+ "Repository": "CRAN",
1955
+ "Requirements": [
1956
+ "ISOcodes",
1957
+ "R"
1958
+ ],
1959
+ "Hash": "82036936cbed392a250d2e6ee6ef2e53"
1960
+ },
1961
+ "streamR": {
1962
+ "Package": "streamR",
1963
+ "Version": "0.4.5",
1964
+ "Source": "Repository",
1965
+ "Repository": "CRAN",
1966
+ "Requirements": [
1967
+ "R",
1968
+ "RCurl",
1969
+ "ndjson",
1970
+ "rjson"
1971
+ ],
1972
+ "Hash": "5956a234de8d4d49744dc51e8b39534c"
1973
+ },
1974
+ "stringi": {
1975
+ "Package": "stringi",
1976
+ "Version": "1.8.3",
1977
+ "Source": "Repository",
1978
+ "Repository": "CRAN",
1979
+ "Requirements": [
1980
+ "R",
1981
+ "stats",
1982
+ "tools",
1983
+ "utils"
1984
+ ],
1985
+ "Hash": "058aebddea264f4c99401515182e656a"
1986
+ },
1987
+ "stringr": {
1988
+ "Package": "stringr",
1989
+ "Version": "1.5.1",
1990
+ "Source": "Repository",
1991
+ "Repository": "CRAN",
1992
+ "Requirements": [
1993
+ "R",
1994
+ "cli",
1995
+ "glue",
1996
+ "lifecycle",
1997
+ "magrittr",
1998
+ "rlang",
1999
+ "stringi",
2000
+ "vctrs"
2001
+ ],
2002
+ "Hash": "960e2ae9e09656611e0b8214ad543207"
2003
+ },
2004
+ "striprtf": {
2005
+ "Package": "striprtf",
2006
+ "Version": "0.6.0",
2007
+ "Source": "Repository",
2008
+ "Repository": "CRAN",
2009
+ "Requirements": [
2010
+ "R",
2011
+ "Rcpp",
2012
+ "magrittr",
2013
+ "stringr",
2014
+ "utils"
2015
+ ],
2016
+ "Hash": "f32c1fb0c19e249bf53430a972c6d9a2"
2017
+ },
2018
+ "styler": {
2019
+ "Package": "styler",
2020
+ "Version": "1.10.2",
2021
+ "Source": "Repository",
2022
+ "Repository": "CRAN",
2023
+ "Requirements": [
2024
+ "R",
2025
+ "R.cache",
2026
+ "cli",
2027
+ "magrittr",
2028
+ "purrr",
2029
+ "rlang",
2030
+ "rprojroot",
2031
+ "tools",
2032
+ "vctrs",
2033
+ "withr"
2034
+ ],
2035
+ "Hash": "d61238fd44fc63c8adf4565efe8eb682"
2036
+ },
2037
+ "sys": {
2038
+ "Package": "sys",
2039
+ "Version": "3.4.2",
2040
+ "Source": "Repository",
2041
+ "Repository": "CRAN",
2042
+ "Hash": "3a1be13d68d47a8cd0bfd74739ca1555"
2043
+ },
2044
+ "testthat": {
2045
+ "Package": "testthat",
2046
+ "Version": "3.2.1",
2047
+ "Source": "Repository",
2048
+ "Repository": "CRAN",
2049
+ "Requirements": [
2050
+ "R",
2051
+ "R6",
2052
+ "brio",
2053
+ "callr",
2054
+ "cli",
2055
+ "desc",
2056
+ "digest",
2057
+ "evaluate",
2058
+ "jsonlite",
2059
+ "lifecycle",
2060
+ "magrittr",
2061
+ "methods",
2062
+ "pkgload",
2063
+ "praise",
2064
+ "processx",
2065
+ "ps",
2066
+ "rlang",
2067
+ "utils",
2068
+ "waldo",
2069
+ "withr"
2070
+ ],
2071
+ "Hash": "4767a686ebe986e6cb01d075b3f09729"
2072
+ },
2073
+ "tibble": {
2074
+ "Package": "tibble",
2075
+ "Version": "3.2.1",
2076
+ "Source": "Repository",
2077
+ "Repository": "CRAN",
2078
+ "Requirements": [
2079
+ "R",
2080
+ "fansi",
2081
+ "lifecycle",
2082
+ "magrittr",
2083
+ "methods",
2084
+ "pillar",
2085
+ "pkgconfig",
2086
+ "rlang",
2087
+ "utils",
2088
+ "vctrs"
2089
+ ],
2090
+ "Hash": "a84e2cc86d07289b3b6f5069df7a004c"
2091
+ },
2092
+ "tidyselect": {
2093
+ "Package": "tidyselect",
2094
+ "Version": "1.2.1",
2095
+ "Source": "Repository",
2096
+ "Repository": "CRAN",
2097
+ "Requirements": [
2098
+ "R",
2099
+ "cli",
2100
+ "glue",
2101
+ "lifecycle",
2102
+ "rlang",
2103
+ "vctrs",
2104
+ "withr"
2105
+ ],
2106
+ "Hash": "829f27b9c4919c16b593794a6344d6c0"
2107
+ },
2108
+ "tzdb": {
2109
+ "Package": "tzdb",
2110
+ "Version": "0.4.0",
2111
+ "Source": "Repository",
2112
+ "Repository": "CRAN",
2113
+ "Requirements": [
2114
+ "R",
2115
+ "cpp11"
2116
+ ],
2117
+ "Hash": "f561504ec2897f4d46f0c7657e488ae1"
2118
+ },
2119
+ "utf8": {
2120
+ "Package": "utf8",
2121
+ "Version": "1.2.4",
2122
+ "Source": "Repository",
2123
+ "Repository": "CRAN",
2124
+ "Requirements": [
2125
+ "R"
2126
+ ],
2127
+ "Hash": "62b65c52671e6665f803ff02954446e9"
2128
+ },
2129
+ "vctrs": {
2130
+ "Package": "vctrs",
2131
+ "Version": "0.6.5",
2132
+ "Source": "Repository",
2133
+ "Repository": "CRAN",
2134
+ "Requirements": [
2135
+ "R",
2136
+ "cli",
2137
+ "glue",
2138
+ "lifecycle",
2139
+ "rlang"
2140
+ ],
2141
+ "Hash": "c03fa420630029418f7e6da3667aac4a"
2142
+ },
2143
+ "viridisLite": {
2144
+ "Package": "viridisLite",
2145
+ "Version": "0.4.2",
2146
+ "Source": "Repository",
2147
+ "Repository": "CRAN",
2148
+ "Requirements": [
2149
+ "R"
2150
+ ],
2151
+ "Hash": "c826c7c4241b6fc89ff55aaea3fa7491"
2152
+ },
2153
+ "vroom": {
2154
+ "Package": "vroom",
2155
+ "Version": "1.6.5",
2156
+ "Source": "Repository",
2157
+ "Repository": "CRAN",
2158
+ "Requirements": [
2159
+ "R",
2160
+ "bit64",
2161
+ "cli",
2162
+ "cpp11",
2163
+ "crayon",
2164
+ "glue",
2165
+ "hms",
2166
+ "lifecycle",
2167
+ "methods",
2168
+ "progress",
2169
+ "rlang",
2170
+ "stats",
2171
+ "tibble",
2172
+ "tidyselect",
2173
+ "tzdb",
2174
+ "vctrs",
2175
+ "withr"
2176
+ ],
2177
+ "Hash": "390f9315bc0025be03012054103d227c"
2178
+ },
2179
+ "waiter": {
2180
+ "Package": "waiter",
2181
+ "Version": "0.2.5.9000",
2182
+ "Source": "GitHub",
2183
+ "RemoteType": "github",
2184
+ "RemoteHost": "api.github.com",
2185
+ "RemoteRepo": "waiter",
2186
+ "RemoteUsername": "JohnCoene",
2187
+ "RemoteRef": "HEAD",
2188
+ "RemoteSha": "6e087aa3b19e0bc3075acd85251318cb83197e2c",
2189
+ "Requirements": [
2190
+ "htmltools",
2191
+ "shiny"
2192
+ ],
2193
+ "Hash": "3f9cdb961d84fa496ae8a6108a6c459d"
2194
+ },
2195
+ "waldo": {
2196
+ "Package": "waldo",
2197
+ "Version": "0.5.2",
2198
+ "Source": "Repository",
2199
+ "Repository": "CRAN",
2200
+ "Requirements": [
2201
+ "R",
2202
+ "cli",
2203
+ "diffobj",
2204
+ "fansi",
2205
+ "glue",
2206
+ "methods",
2207
+ "rematch2",
2208
+ "rlang",
2209
+ "tibble"
2210
+ ],
2211
+ "Hash": "c7d3fd6d29ab077cbac8f0e2751449e6"
2212
+ },
2213
+ "withr": {
2214
+ "Package": "withr",
2215
+ "Version": "3.0.0",
2216
+ "Source": "Repository",
2217
+ "Repository": "CRAN",
2218
+ "Requirements": [
2219
+ "R",
2220
+ "grDevices",
2221
+ "graphics"
2222
+ ],
2223
+ "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35"
2224
+ },
2225
+ "xfun": {
2226
+ "Package": "xfun",
2227
+ "Version": "0.42",
2228
+ "Source": "Repository",
2229
+ "Repository": "CRAN",
2230
+ "Requirements": [
2231
+ "grDevices",
2232
+ "stats",
2233
+ "tools"
2234
+ ],
2235
+ "Hash": "fd1349170df31f7a10bd98b0189e85af"
2236
+ },
2237
+ "xml2": {
2238
+ "Package": "xml2",
2239
+ "Version": "1.3.6",
2240
+ "Source": "Repository",
2241
+ "Repository": "CRAN",
2242
+ "Requirements": [
2243
+ "R",
2244
+ "cli",
2245
+ "methods",
2246
+ "rlang"
2247
+ ],
2248
+ "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61"
2249
+ },
2250
+ "xmlparsedata": {
2251
+ "Package": "xmlparsedata",
2252
+ "Version": "1.0.5",
2253
+ "Source": "Repository",
2254
+ "Repository": "CRAN",
2255
+ "Requirements": [
2256
+ "R"
2257
+ ],
2258
+ "Hash": "45e4bf3c46476896e821fc0a408fb4fc"
2259
+ },
2260
+ "xtable": {
2261
+ "Package": "xtable",
2262
+ "Version": "1.8-4",
2263
+ "Source": "Repository",
2264
+ "Repository": "CRAN",
2265
+ "Requirements": [
2266
+ "R",
2267
+ "stats",
2268
+ "utils"
2269
+ ],
2270
+ "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2"
2271
+ },
2272
+ "yaml": {
2273
+ "Package": "yaml",
2274
+ "Version": "2.3.8",
2275
+ "Source": "Repository",
2276
+ "Repository": "CRAN",
2277
+ "Hash": "29240487a071f535f5e5d5a323b7afbd"
2278
+ },
2279
+ "zip": {
2280
+ "Package": "zip",
2281
+ "Version": "2.3.1",
2282
+ "Source": "Repository",
2283
+ "Repository": "CRAN",
2284
+ "Hash": "fcc4bd8e6da2d2011eb64a5e5cc685ab"
2285
+ }
2286
+ }
2287
+ }
rhino.yml ADDED
@@ -0,0 +1 @@
 
 
1
+ sass: node