This week’s Tidy Tuesday I investigate the links between state names, particularly their etymological roots in natural elements, and the geographic allocation per individual in these regions!

Word Cloud

A word cloud reveals patterns and frequencies in the etymological roots of the state names. The word cloud highlighted some natural elements, specifically ‘river (or water)’ and ‘mountains’, in the meaning of state names

library(tm)
library(SnowballC)
library(wordcloud)

etymology_df <- read.csv("./state_name_etymology.csv")
corpus <- Corpus(VectorSource(etymology_df$meaning))

# Text Cleaning
corpus_clean <- tm_map(corpus, content_transformer(tolower)) # Convert to Lower Case
corpus_clean <- tm_map(corpus_clean, content_transformer(removeNumbers)) # Remove Numbers
corpus_clean <- tm_map(corpus_clean, content_transformer(removePunctuation)) # Remove Punctuation
corpus_clean <- tm_map(corpus_clean, content_transformer(removeWords), stopwords("en")) # Remove Stopwords
corpus_clean <- tm_map(corpus_clean, content_transformer(stripWhitespace)) # Remove Whitespace
corpus_clean <- tm_map(corpus_clean, content_transformer(stemDocument)) # Stemming to bring words to root form
banned_words <- c("name", "mean", "refer", "word")
corpus_clean <- tm_map(corpus_clean, removeWords, banned_words)

tdm <- TermDocumentMatrix(corpus_clean)
tdm_df <- as.data.frame(as.matrix(tdm))
word_freqs <- rowSums(tdm_df)
word_freqs <- sort(word_freqs, decreasing=TRUE)

wordcloud(names(word_freqs), word_freqs, min.freq = 3, random.order=FALSE, colors=brewer.pal(8, "Dark2"), scale=c(4,0.5))

View(etymology_df)

Data processing

The states were categorized based on their etymology into three distinct groups: ‘water’, ‘mountain’, or ‘others’. And the land area per person (km2) and water area per person (km2) are calculated. You can expand code snippet to see more.

library(GWalkR)
df <- read.csv("./states.csv")
df$"land area per person (km2)" <- df$land_area_km2 / df$population_2020
df$"water area per person (km2)" <- df$water_area_km2 / df$population_2020
df$etymology <- "Others"
df$state <- sub("\\[B]$", "", df$state)
for (i in 1:nrow(etymology_df)) {
    if (grepl("river", etymology_df$meaning[i], ignore.case = TRUE)) {
        df$etymology[df$state == etymology_df$state[i]] <- "water"
    }
    if (grepl("water", etymology_df$meaning[i], ignore.case = TRUE)) {
        df$etymology[df$state == etymology_df$state[i]] <- "water"
    }
    if (grepl("mountain", etymology_df$meaning[i], ignore.case = TRUE)) {
        df$etymology[df$state == etymology_df$state[i]] <- "mountain"
    }
}

Data Viz

The bar charts allow a clear comparison between states, and an understanding of how the etymology aligns with the geographical distribution per capita. The interface below allows you to freely explore and edit my data vis! Empowered by GWalkR

visConfig <- '[{"visId":"gw_vRqk","name":"States","encodings":{"dimensions":[{"dragId":"gw_kAMc","fid":"c3RhdGU=","name":"state","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_hqjh","fid":"ZXR5bW9sb2d5","name":"etymology","semanticType":"nominal","analyticType":"dimension"},{"dragId":"gw_OBVQ","fid":"YWRtaXNzaW9u","name":"admission","semanticType":"nominal","analyticType":"dimension"}],"measures":[{"dragId":"gw_GEid","fid":"bGFuZCBhcmVhIHBlciBwZXJzb24gKGttMik=","name":"land area per person (km2)","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_1h84","fid":"d2F0ZXIgYXJlYSBwZXIgcGVyc29uIChrbTIp","name":"water area per person (km2)","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_dyip","fid":"cG9wdWxhdGlvbl8yMDIw","name":"population_2020","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_KVE9","fid":"dG90YWxfYXJlYV9rbTI=","name":"total_area_km2","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_0rRI","fid":"bGFuZF9hcmVhX2ttMg==","name":"land_area_km2","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_5QId","fid":"d2F0ZXJfYXJlYV9rbTI=","name":"water_area_km2","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_xrdo","fid":"bl9yZXByZXNlbnRhdGl2ZXM=","name":"n_representatives","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_count_fid","fid":"gw_count_fid","name":"Row count","analyticType":"measure","semanticType":"quantitative","aggName":"sum","computed":true,"expression":{"op":"one","params":[],"as":"gw_count_fid"}}],"rows":[{"dragId":"gw_tBZk","fid":"c3RhdGU=","name":"state","semanticType":"nominal","analyticType":"dimension","sort":"descending"}],"columns":[{"dragId":"gw_XzgL","fid":"bGFuZCBhcmVhIHBlciBwZXJzb24gKGttMik=","name":"land area per person (km2)","analyticType":"measure","semanticType":"quantitative","aggName":"sum"},{"dragId":"gw_Wni6","fid":"d2F0ZXIgYXJlYSBwZXIgcGVyc29uIChrbTIp","name":"water area per person (km2)","analyticType":"measure","semanticType":"quantitative","aggName":"sum"}],"color":[{"dragId":"gw_FERl","fid":"ZXR5bW9sb2d5","name":"etymology","semanticType":"nominal","analyticType":"dimension"}],"opacity":[],"size":[],"shape":[],"radius":[],"theta":[],"details":[],"filters":[],"text":[]},"config":{"defaultAggregated":false,"geoms":["auto"],"stack":"stack","showActions":false,"interactiveScale":false,"sorted":"none","zeroScale":true,"size":{"mode":"fixed","width":537,"height":586},"format":{}}}]'

gwalkr(data=df[df$state != "Alaska",c("state","land area per person (km2)","water area per person (km2)", "etymology", "admission", "population_2020", "total_area_km2", "land_area_km2", "water_area_km2", "n_representatives")], visConfig=visConfig)

Author’s info

   

LS0tCnRpdGxlOiAi8J+MiiDim7DvuI8gRnJvbSBQZWFrIHRvIFRpZGU6IEV0eW1vbG9neSwgVGVycml0b3J5ICYgUGVvcGxlIGluIFUuUy4gU3RhdGVzIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIHRoZW1lOiBjZXJ1bGVhbgogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKLS0tCgpUaGlzIHdlZWsncyBUaWR5IFR1ZXNkYXkgSSBpbnZlc3RpZ2F0ZSB0aGUgbGlua3MgYmV0d2VlbiBzdGF0ZSBuYW1lcywgcGFydGljdWxhcmx5IHRoZWlyIGV0eW1vbG9naWNhbCByb290cyBpbiBuYXR1cmFsIGVsZW1lbnRzLCBhbmQgdGhlIGdlb2dyYXBoaWMgYWxsb2NhdGlvbiBwZXIgaW5kaXZpZHVhbCBpbiB0aGVzZSByZWdpb25zIQoKIyBXb3JkIENsb3VkCkEgd29yZCBjbG91ZCByZXZlYWxzIHBhdHRlcm5zIGFuZCBmcmVxdWVuY2llcyBpbiB0aGUgZXR5bW9sb2dpY2FsIHJvb3RzIG9mIHRoZSBzdGF0ZSBuYW1lcy4gVGhlIHdvcmQgY2xvdWQgaGlnaGxpZ2h0ZWQgc29tZSBuYXR1cmFsIGVsZW1lbnRzLCBzcGVjaWZpY2FsbHkgJ3JpdmVyIChvciB3YXRlciknIGFuZCAnbW91bnRhaW5zJywgaW4gdGhlIG1lYW5pbmcgb2Ygc3RhdGUgbmFtZXMKCmBgYHtSLCB3YXJuaW5nPUZBTFNFLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9M30KbGlicmFyeSh0bSkKbGlicmFyeShTbm93YmFsbEMpCmxpYnJhcnkod29yZGNsb3VkKQoKZXR5bW9sb2d5X2RmIDwtIHJlYWQuY3N2KCIuL3N0YXRlX25hbWVfZXR5bW9sb2d5LmNzdiIpCmNvcnB1cyA8LSBDb3JwdXMoVmVjdG9yU291cmNlKGV0eW1vbG9neV9kZiRtZWFuaW5nKSkKCiMgVGV4dCBDbGVhbmluZwpjb3JwdXNfY2xlYW4gPC0gdG1fbWFwKGNvcnB1cywgY29udGVudF90cmFuc2Zvcm1lcih0b2xvd2VyKSkgIyBDb252ZXJ0IHRvIExvd2VyIENhc2UKY29ycHVzX2NsZWFuIDwtIHRtX21hcChjb3JwdXNfY2xlYW4sIGNvbnRlbnRfdHJhbnNmb3JtZXIocmVtb3ZlTnVtYmVycykpICMgUmVtb3ZlIE51bWJlcnMKY29ycHVzX2NsZWFuIDwtIHRtX21hcChjb3JwdXNfY2xlYW4sIGNvbnRlbnRfdHJhbnNmb3JtZXIocmVtb3ZlUHVuY3R1YXRpb24pKSAjIFJlbW92ZSBQdW5jdHVhdGlvbgpjb3JwdXNfY2xlYW4gPC0gdG1fbWFwKGNvcnB1c19jbGVhbiwgY29udGVudF90cmFuc2Zvcm1lcihyZW1vdmVXb3JkcyksIHN0b3B3b3JkcygiZW4iKSkgIyBSZW1vdmUgU3RvcHdvcmRzCmNvcnB1c19jbGVhbiA8LSB0bV9tYXAoY29ycHVzX2NsZWFuLCBjb250ZW50X3RyYW5zZm9ybWVyKHN0cmlwV2hpdGVzcGFjZSkpICMgUmVtb3ZlIFdoaXRlc3BhY2UKY29ycHVzX2NsZWFuIDwtIHRtX21hcChjb3JwdXNfY2xlYW4sIGNvbnRlbnRfdHJhbnNmb3JtZXIoc3RlbURvY3VtZW50KSkgIyBTdGVtbWluZyB0byBicmluZyB3b3JkcyB0byByb290IGZvcm0KYmFubmVkX3dvcmRzIDwtIGMoIm5hbWUiLCAibWVhbiIsICJyZWZlciIsICJ3b3JkIikKY29ycHVzX2NsZWFuIDwtIHRtX21hcChjb3JwdXNfY2xlYW4sIHJlbW92ZVdvcmRzLCBiYW5uZWRfd29yZHMpCgp0ZG0gPC0gVGVybURvY3VtZW50TWF0cml4KGNvcnB1c19jbGVhbikKdGRtX2RmIDwtIGFzLmRhdGEuZnJhbWUoYXMubWF0cml4KHRkbSkpCndvcmRfZnJlcXMgPC0gcm93U3Vtcyh0ZG1fZGYpCndvcmRfZnJlcXMgPC0gc29ydCh3b3JkX2ZyZXFzLCBkZWNyZWFzaW5nPVRSVUUpCgp3b3JkY2xvdWQobmFtZXMod29yZF9mcmVxcyksIHdvcmRfZnJlcXMsIG1pbi5mcmVxID0gMywgcmFuZG9tLm9yZGVyPUZBTFNFLCBjb2xvcnM9YnJld2VyLnBhbCg4LCAiRGFyazIiKSwgc2NhbGU9Yyg0LDAuNSkpCgpgYGAKCiMgRGF0YSBwcm9jZXNzaW5nClRoZSBzdGF0ZXMgd2VyZSBjYXRlZ29yaXplZCBiYXNlZCBvbiB0aGVpciBldHltb2xvZ3kgaW50byB0aHJlZSBkaXN0aW5jdCBncm91cHM6ICd3YXRlcicsICdtb3VudGFpbicsIG9yICdvdGhlcnMnLiBBbmQgdGhlIGBsYW5kIGFyZWEgcGVyIHBlcnNvbiAoa20yKWAgYW5kIGB3YXRlciBhcmVhIHBlciBwZXJzb24gKGttMilgIGFyZSBjYWxjdWxhdGVkLiBZb3UgY2FuIGV4cGFuZCBjb2RlIHNuaXBwZXQgdG8gc2VlIG1vcmUuCgpgYGB7Un0KbGlicmFyeShHV2Fsa1IpCmRmIDwtIHJlYWQuY3N2KCIuL3N0YXRlcy5jc3YiKQpkZiQibGFuZCBhcmVhIHBlciBwZXJzb24gKGttMikiIDwtIGRmJGxhbmRfYXJlYV9rbTIgLyBkZiRwb3B1bGF0aW9uXzIwMjAKZGYkIndhdGVyIGFyZWEgcGVyIHBlcnNvbiAoa20yKSIgPC0gZGYkd2F0ZXJfYXJlYV9rbTIgLyBkZiRwb3B1bGF0aW9uXzIwMjAKZGYkZXR5bW9sb2d5IDwtICJPdGhlcnMiCmRmJHN0YXRlIDwtIHN1YigiXFxbQl0kIiwgIiIsIGRmJHN0YXRlKQpmb3IgKGkgaW4gMTpucm93KGV0eW1vbG9neV9kZikpIHsKICAgIGlmIChncmVwbCgicml2ZXIiLCBldHltb2xvZ3lfZGYkbWVhbmluZ1tpXSwgaWdub3JlLmNhc2UgPSBUUlVFKSkgewogICAgICAgIGRmJGV0eW1vbG9neVtkZiRzdGF0ZSA9PSBldHltb2xvZ3lfZGYkc3RhdGVbaV1dIDwtICJ3YXRlciIKICAgIH0KICAgIGlmIChncmVwbCgid2F0ZXIiLCBldHltb2xvZ3lfZGYkbWVhbmluZ1tpXSwgaWdub3JlLmNhc2UgPSBUUlVFKSkgewogICAgICAgIGRmJGV0eW1vbG9neVtkZiRzdGF0ZSA9PSBldHltb2xvZ3lfZGYkc3RhdGVbaV1dIDwtICJ3YXRlciIKICAgIH0KICAgIGlmIChncmVwbCgibW91bnRhaW4iLCBldHltb2xvZ3lfZGYkbWVhbmluZ1tpXSwgaWdub3JlLmNhc2UgPSBUUlVFKSkgewogICAgICAgIGRmJGV0eW1vbG9neVtkZiRzdGF0ZSA9PSBldHltb2xvZ3lfZGYkc3RhdGVbaV1dIDwtICJtb3VudGFpbiIKICAgIH0KfQpgYGAKCiMgRGF0YSBWaXoKVGhlIGJhciBjaGFydHMgYWxsb3cgYSBjbGVhciBjb21wYXJpc29uIGJldHdlZW4gc3RhdGVzLCBhbmQgYW4gdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGV0eW1vbG9neSBhbGlnbnMgd2l0aCB0aGUgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBwZXIgY2FwaXRhLiBUaGUgaW50ZXJmYWNlIGJlbG93IGFsbG93cyB5b3UgdG8gZnJlZWx5IGV4cGxvcmUgYW5kIGVkaXQgbXkgZGF0YSB2aXMhIEVtcG93ZXJlZCBieSBHV2Fsa1IgWyFbXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dpdGh1Yi1HV2Fsa1ItMDAwMDAwP3N0eWxlPWZsYXQtc3F1YXJlJmxvZ289Z2l0aHViKV0oaHR0cHM6Ly9naXRodWIuY29tL2thbmFyaWVzL0dXYWxrUikKCmBgYHtSfQp2aXNDb25maWcgPC0gJ1t7InZpc0lkIjoiZ3dfdlJxayIsIm5hbWUiOiJTdGF0ZXMiLCJlbmNvZGluZ3MiOnsiZGltZW5zaW9ucyI6W3siZHJhZ0lkIjoiZ3dfa0FNYyIsImZpZCI6ImMzUmhkR1U9IiwibmFtZSI6InN0YXRlIiwic2VtYW50aWNUeXBlIjoibm9taW5hbCIsImFuYWx5dGljVHlwZSI6ImRpbWVuc2lvbiJ9LHsiZHJhZ0lkIjoiZ3dfaHFqaCIsImZpZCI6IlpYUjViVzlzYjJkNSIsIm5hbWUiOiJldHltb2xvZ3kiLCJzZW1hbnRpY1R5cGUiOiJub21pbmFsIiwiYW5hbHl0aWNUeXBlIjoiZGltZW5zaW9uIn0seyJkcmFnSWQiOiJnd19PQlZRIiwiZmlkIjoiWVdSdGFYTnphVzl1IiwibmFtZSI6ImFkbWlzc2lvbiIsInNlbWFudGljVHlwZSI6Im5vbWluYWwiLCJhbmFseXRpY1R5cGUiOiJkaW1lbnNpb24ifV0sIm1lYXN1cmVzIjpbeyJkcmFnSWQiOiJnd19HRWlkIiwiZmlkIjoiYkdGdVpDQmhjbVZoSUhCbGNpQndaWEp6YjI0Z0tHdHRNaWs9IiwibmFtZSI6ImxhbmQgYXJlYSBwZXIgcGVyc29uIChrbTIpIiwiYW5hbHl0aWNUeXBlIjoibWVhc3VyZSIsInNlbWFudGljVHlwZSI6InF1YW50aXRhdGl2ZSIsImFnZ05hbWUiOiJzdW0ifSx7ImRyYWdJZCI6Imd3XzFoODQiLCJmaWQiOiJkMkYwWlhJZ1lYSmxZU0J3WlhJZ2NHVnljMjl1SUNocmJUSXAiLCJuYW1lIjoid2F0ZXIgYXJlYSBwZXIgcGVyc29uIChrbTIpIiwiYW5hbHl0aWNUeXBlIjoibWVhc3VyZSIsInNlbWFudGljVHlwZSI6InF1YW50aXRhdGl2ZSIsImFnZ05hbWUiOiJzdW0ifSx7ImRyYWdJZCI6Imd3X2R5aXAiLCJmaWQiOiJjRzl3ZFd4aGRHbHZibDh5TURJdyIsIm5hbWUiOiJwb3B1bGF0aW9uXzIwMjAiLCJhbmFseXRpY1R5cGUiOiJtZWFzdXJlIiwic2VtYW50aWNUeXBlIjoicXVhbnRpdGF0aXZlIiwiYWdnTmFtZSI6InN1bSJ9LHsiZHJhZ0lkIjoiZ3dfS1ZFOSIsImZpZCI6ImRHOTBZV3hmWVhKbFlWOXJiVEk9IiwibmFtZSI6InRvdGFsX2FyZWFfa20yIiwiYW5hbHl0aWNUeXBlIjoibWVhc3VyZSIsInNlbWFudGljVHlwZSI6InF1YW50aXRhdGl2ZSIsImFnZ05hbWUiOiJzdW0ifSx7ImRyYWdJZCI6Imd3XzByUkkiLCJmaWQiOiJiR0Z1WkY5aGNtVmhYMnR0TWc9PSIsIm5hbWUiOiJsYW5kX2FyZWFfa20yIiwiYW5hbHl0aWNUeXBlIjoibWVhc3VyZSIsInNlbWFudGljVHlwZSI6InF1YW50aXRhdGl2ZSIsImFnZ05hbWUiOiJzdW0ifSx7ImRyYWdJZCI6Imd3XzVRSWQiLCJmaWQiOiJkMkYwWlhKZllYSmxZVjlyYlRJPSIsIm5hbWUiOiJ3YXRlcl9hcmVhX2ttMiIsImFuYWx5dGljVHlwZSI6Im1lYXN1cmUiLCJzZW1hbnRpY1R5cGUiOiJxdWFudGl0YXRpdmUiLCJhZ2dOYW1lIjoic3VtIn0seyJkcmFnSWQiOiJnd194cmRvIiwiZmlkIjoiYmw5eVpYQnlaWE5sYm5SaGRHbDJaWE09IiwibmFtZSI6Im5fcmVwcmVzZW50YXRpdmVzIiwiYW5hbHl0aWNUeXBlIjoibWVhc3VyZSIsInNlbWFudGljVHlwZSI6InF1YW50aXRhdGl2ZSIsImFnZ05hbWUiOiJzdW0ifSx7ImRyYWdJZCI6Imd3X2NvdW50X2ZpZCIsImZpZCI6Imd3X2NvdW50X2ZpZCIsIm5hbWUiOiJSb3cgY291bnQiLCJhbmFseXRpY1R5cGUiOiJtZWFzdXJlIiwic2VtYW50aWNUeXBlIjoicXVhbnRpdGF0aXZlIiwiYWdnTmFtZSI6InN1bSIsImNvbXB1dGVkIjp0cnVlLCJleHByZXNzaW9uIjp7Im9wIjoib25lIiwicGFyYW1zIjpbXSwiYXMiOiJnd19jb3VudF9maWQifX1dLCJyb3dzIjpbeyJkcmFnSWQiOiJnd190QlprIiwiZmlkIjoiYzNSaGRHVT0iLCJuYW1lIjoic3RhdGUiLCJzZW1hbnRpY1R5cGUiOiJub21pbmFsIiwiYW5hbHl0aWNUeXBlIjoiZGltZW5zaW9uIiwic29ydCI6ImRlc2NlbmRpbmcifV0sImNvbHVtbnMiOlt7ImRyYWdJZCI6Imd3X1h6Z0wiLCJmaWQiOiJiR0Z1WkNCaGNtVmhJSEJsY2lCd1pYSnpiMjRnS0d0dE1paz0iLCJuYW1lIjoibGFuZCBhcmVhIHBlciBwZXJzb24gKGttMikiLCJhbmFseXRpY1R5cGUiOiJtZWFzdXJlIiwic2VtYW50aWNUeXBlIjoicXVhbnRpdGF0aXZlIiwiYWdnTmFtZSI6InN1bSJ9LHsiZHJhZ0lkIjoiZ3dfV25pNiIsImZpZCI6ImQyRjBaWElnWVhKbFlTQndaWElnY0dWeWMyOXVJQ2hyYlRJcCIsIm5hbWUiOiJ3YXRlciBhcmVhIHBlciBwZXJzb24gKGttMikiLCJhbmFseXRpY1R5cGUiOiJtZWFzdXJlIiwic2VtYW50aWNUeXBlIjoicXVhbnRpdGF0aXZlIiwiYWdnTmFtZSI6InN1bSJ9XSwiY29sb3IiOlt7ImRyYWdJZCI6Imd3X0ZFUmwiLCJmaWQiOiJaWFI1Ylc5c2IyZDUiLCJuYW1lIjoiZXR5bW9sb2d5Iiwic2VtYW50aWNUeXBlIjoibm9taW5hbCIsImFuYWx5dGljVHlwZSI6ImRpbWVuc2lvbiJ9XSwib3BhY2l0eSI6W10sInNpemUiOltdLCJzaGFwZSI6W10sInJhZGl1cyI6W10sInRoZXRhIjpbXSwiZGV0YWlscyI6W10sImZpbHRlcnMiOltdLCJ0ZXh0IjpbXX0sImNvbmZpZyI6eyJkZWZhdWx0QWdncmVnYXRlZCI6ZmFsc2UsImdlb21zIjpbImF1dG8iXSwic3RhY2siOiJzdGFjayIsInNob3dBY3Rpb25zIjpmYWxzZSwiaW50ZXJhY3RpdmVTY2FsZSI6ZmFsc2UsInNvcnRlZCI6Im5vbmUiLCJ6ZXJvU2NhbGUiOnRydWUsInNpemUiOnsibW9kZSI6ImZpeGVkIiwid2lkdGgiOjUzNywiaGVpZ2h0Ijo1ODZ9LCJmb3JtYXQiOnt9fX1dJwoKZ3dhbGtyKGRhdGE9ZGZbZGYkc3RhdGUgIT0gIkFsYXNrYSIsYygic3RhdGUiLCJsYW5kIGFyZWEgcGVyIHBlcnNvbiAoa20yKSIsIndhdGVyIGFyZWEgcGVyIHBlcnNvbiAoa20yKSIsICJldHltb2xvZ3kiLCAiYWRtaXNzaW9uIiwgInBvcHVsYXRpb25fMjAyMCIsICJ0b3RhbF9hcmVhX2ttMiIsICJsYW5kX2FyZWFfa20yIiwgIndhdGVyX2FyZWFfa20yIiwgIm5fcmVwcmVzZW50YXRpdmVzIildLCB2aXNDb25maWc9dmlzQ29uZmlnKQpgYGAKCiMgQXV0aG9yJ3MgaW5mbwpbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbWFzdG9kb24tQGJya3ktNjM2NEZGP3N0eWxlPWZsYXQtc3F1YXJlJmxvZ289bWFzdG9kb24pXShodHRwczovL2Zvc3N0b2Rvbi5vcmcvQGJya3kpCiZuYnNwOwpbIVtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ2l0aHViLWJydWNleXl1LTAwMDAwMD9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPWdpdGh1YildKGh0dHBzOi8vZ2l0aHViLmNvbS9icnVjZXl5dSkKJm5ic3A7ClshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS90d2l0dGVyLUJydWNlX1l1WXVlLTAzQTlGND9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXR3aXR0ZXIpXShodHRwczovL3R3aXR0ZXIuY29tL0JydWNlX1l1WXVlKQo=