UNICEF [Link]

  1. 世界では、六人に一人(3億5600万人)の子どもたちが「極度にまずしい」暮らしをしています。

どのようなデータから、このようなことがわかるのでしょうか。まずは、極度の貧困とは、どのように定義しているのでしょうか。

準備

Step 1. (R に機能を付け加える)パッケージのインストール(最初だけ)

install.packages("tidyverse")
install.packages("WDI")
install.packages('showtext')

Step 2. パッケージを使えるように読み込みます。

library(tidyverse)
library(WDI)
library(showtext)
showtext_auto(FALSE)
# showtext_auto() # for Word remove # 

Step 3. データを保存するための data という名前のディレクトリ(フォルダー)を作成します。(最初だけ)

dir.create("data")
Warning: 'data' already exists

Step 4. エラーが生じた時に、調べやすいので、‘システム言語(System Language)’ を英語にしておきます。(最初だけ)

Sys.setenv(LANG = "en")

Step 5. データを読み込みます。WDI パッケージをつかうと、簡単に、データを読み込むことができます。わかりやすい名前(gdppcap, pop)をつけ、人口(pop)も読み込んでおきます。extra = TRUE としておくと、使い情報を一緒に読み込むことができます。

df_pcap <- WDI(indicator = c(gdppcap = "NY.GDP.PCAP.PP.KD"), extra = TRUE)

Step 6. データをみてみます。

head(df_pcap)

Step 7. データの列(columns、変数 variables)はどのようなものがあるかを表示します。

str(df_pcap)
'data.frame':   16758 obs. of  13 variables:
 $ country    : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
 $ iso2c      : chr  "AF" "AF" "AF" "AF" ...
 $ iso3c      : chr  "AFG" "AFG" "AFG" "AFG" ...
 $ year       : int  1991 1987 1990 1989 1988 2019 2018 2017 2016 2015 ...
 $ gdppcap    : num  NA NA NA NA NA ...
  ..- attr(*, "label")= chr "GDP per capita, PPP (constant 2017 international $)"
 $ status     : chr  "" "" "" "" ...
 $ lastupdated: chr  "2024-02-21" "2024-02-21" "2024-02-21" "2024-02-21" ...
 $ region     : chr  "South Asia" "South Asia" "South Asia" "South Asia" ...
 $ capital    : chr  "Kabul" "Kabul" "Kabul" "Kabul" ...
 $ longitude  : chr  "69.1761" "69.1761" "69.1761" "69.1761" ...
 $ latitude   : chr  "34.5228" "34.5228" "34.5228" "34.5228" ...
 $ income     : chr  "Low income" "Low income" "Low income" "Low income" ...
 $ lending    : chr  "IDA" "IDA" "IDA" "IDA" ...

Step 8. 必要な列だけ取り出します。

df_pcap <- df_pcap |> select(c(1,2,4,5,8,12))
head(df_pcap)

Step 9. (ちょっと高度ですが)region, income, lending には、どのようなものがあるか、みてみます。

df_pcap |> select(region, income) |> lapply(unique)
$region
[1] "South Asia"                 "Aggregates"                
[3] "Europe & Central Asia"      "Middle East & North Africa"
[5] "East Asia & Pacific"        "Sub-Saharan Africa"        
[7] "Latin America & Caribbean"  "North America"             
[9] NA                          

$income
[1] "Low income"          "Aggregates"          "Upper middle income"
[4] "Lower middle income" "High income"         NA                   
[7] "Not classified"     

視覚化(Visualization)

図 1. 世界の GDP per Capita の推移(経年変化)を見てみます。

COUNTRY <- "World"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
  ggplot(aes(year, gdppcap)) + geom_line() +
  labs(title = "世界の一人当たりの GDP の平均の推移")

図 2. Low Income の 推移をみてみましょう。

COUNTRY <- "Low income"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
  ggplot(aes(year, gdppcap)) + geom_line() +
  labs(title = "低所得国の一人当たりの GDP の平均の推移")

図 3. Low Income の 推移を、1日あたりに変えてみてみましょう。

COUNTRY <- "Low income"
df_pcap |> filter(country == COUNTRY) |> drop_na(gdppcap) |>
  ggplot(aes(year, gdppcap/365)) + geom_line() +
  labs(title = "世界の1日一人当たりの GDP の平均の推移")

図 4. 2022年の、Low Income Country について、GDP per Capita の少ないから順に並べてみましょう。

df_pcap |> filter(year == 2022, region != "Aggregates") |> 
  filter(income == "Low income") |>
  drop_na(gdppcap) |> arrange(gdppcap)

図 5. 一人当たりのGDP の2022年の分布をみてみましょう。

df_pcap |> filter(year == 2022, region != "Aggregates") |> drop_na(gdppcap) |> 
  ggplot(aes(gdppcap)) + geom_histogram(binwidth = 10000) +
  labs(title = "2022年の 一人当たりの GDP の国の分布")

図 6. 地域ごとに色分けしてみてみましょう。

df_pcap |> filter(year == 2022, region != "Aggregates") |> 
  drop_na(gdppcap) |> 
  ggplot(aes(gdppcap, fill = region)) + 
  geom_histogram(col = "black", linewidth = 0.2, binwidth = 10000) +
  labs(title = "2022年の 一人当たりの GDP の国の分布", 
       subtitle = "地域情報付き")

図 7. 箱ひげ図で見てみましょう。

df_pcap |> filter(year == 2020) |> drop_na(gdppcap) |> 
  filter(income != "Aggregates") |> 
  ggplot(aes(gdppcap, factor(income, levels = c("High income", "Upper middle income", "Lower middle income", "Low income")), fill = income)) + geom_boxplot() + scale_x_log10() +
  labs(y = "") +
  theme(legend.position = "none") +
  labs(title = "一人当たりの GDP の所得レベル毎の分布")

課題

LS0tCnRpdGxlOiAi5qW15bqm44Gr6LKn44GX44GE77yB77yfIgpkYXRlOiAiMjAyMy4xMi4xMiIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBkZl9wcmludDogcGFnZWQKICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKCj4gVU5JQ0VGIFtbTGlua10oaHR0cHM6Ly93d3cudW5pY2VmLm9yLmpwL2tvZG9tby9zZGdzLzE3Z29hbHMvMS1wb3ZlcnR5LyldCj4KPiAxLiAg5LiW55WM44Gn44Gv44CB5YWt5Lq644Gr5LiA5Lq677yIM+WEhDU2MDDkuIfkurrvvInjga7lrZDjganjgoLjgZ/jgaHjgYzjgIzmpbXluqbjgavjgb7jgZrjgZfjgYTjgI3mmq7jgonjgZfjgpLjgZfjgabjgYTjgb7jgZnjgIIKCuOBqeOBruOCiOOBhuOBquODh+ODvOOCv+OBi+OCieOAgeOBk+OBruOCiOOBhuOBquOBk+OBqOOBjOOCj+OBi+OCi+OBruOBp+OBl+OCh+OBhuOBi+OAguOBvuOBmuOBr+OAgealteW6puOBruiyp+WbsOOBqOOBr+OAgeOBqeOBruOCiOOBhuOBq+Wumue+qeOBl+OBpuOBhOOCi+OBruOBp+OBl+OCh+OBhuOBi+OAggoKIyMjIyBGYWN0IFNoZWV0OiBBbiBBZGp1c3RtZW50IHRvIEdsb2JhbCBQb3ZlcnR5IExpbmVzIFtbTGlua10oaHR0cHM6Ly93d3cud29ybGRiYW5rLm9yZy9lbi9uZXdzL2ZhY3RzaGVldC8yMDIyLzA1LzAyL2ZhY3Qtc2hlZXQtYW4tYWRqdXN0bWVudC10by1nbG9iYWwtcG92ZXJ0eS1saW5lcyldCgpUaGUgV29ybGQgQmFuayB1cGRhdGVkIHRoZSBnbG9iYWwgcG92ZXJ0eSBsaW5lcyBpbiBTZXB0ZW1iZXIgMjAyMi4gVGhlIGRlY2lzaW9uLCBhbm5vdW5jZWQgaW4gTWF5LCBmb2xsb3dzIHRoZSByZWxlYXNlIGluIDIwMjAgb2YgbmV3IHB1cmNoYXNpbmcgcG93ZXIgcGFyaXRpZXMgKFBQUHMpLS0tdGhlIG1haW4gZGF0YSB1c2VkIHRvIGNvbnZlcnQgZGlmZmVyZW50IGN1cnJlbmNpZXMgaW50byBhIGNvbW1vbiwgY29tcGFyYWJsZSB1bml0IGFuZCBhY2NvdW50IGZvciBwcmljZSBkaWZmZXJlbmNlcyBhY3Jvc3MgY291bnRyaWVzLiBUaGUgbmV3IGV4dHJlbWUgcG92ZXJ0eSBsaW5lIG9mIFwkMi4xNSBwZXIgcGVyc29uIHBlciBkYXksIHdoaWNoIHJlcGxhY2VzIHRoZSBcJDEuOTAgcG92ZXJ0eSBsaW5lLCBpcyBiYXNlZCBvbiAyMDE3IFBQUHMuIEhlcmUgeW91IGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNoYW5nZSBhbmQgd2hhdCBpdCBtZWFucyBmb3IgbWVhc3VyaW5nIGdsb2JhbCBwb3ZlcnR5LgoK5LiW55WM6YqA6KGM44GvMjAyMuW5tDnmnIjjgavkuJbnlYzjga7osqflm7Djg6njgqTjg7PjgpLmm7TmlrDjgZfjgZ/jgII15pyI44Gr55m66KGo44GV44KM44Gf44GT44Gu5rG65a6a44Gv44CBMjAyMOW5tOOBq+aWsOizvOiyt+WKm+W5s+S+oe+8iFBQUO+8ieOBjOeZuuihqOOBleOCjOOBn+OBk+OBqOOCkuWPl+OBkeOBpuOBruOCguOBruOBp+OBguOCi+OAguaWsOizvOiyt+WKm+W5s+S+oe+8iFBQUO+8ieOBqOOBr+OAgeOBleOBvuOBluOBvuOBqumAmuiyqOOCkuWFsemAmuOBruavlOi8g+WPr+iDveOBquWNmOS9jeOBq+WkieaPm+OBl+OAgeiyp+WbsOOBruevhOWbsuOCkuiqrOaYjuOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBleOCjOOCi+S4u+imgeOBquODh+ODvOOCv+OBp+OBguOCi+OAguWbveOBlOOBqOOBruS+oeagvOW3ruOAgjEuOTDjg4njg6vjga7osqflm7Dnt5rjgavku6Pjgo/jgovjgIEx5Lq65b2T44Gf44KKMeaXpeW9k+OBn+OCijIuMTXjg4njg6vjgajjgYTjgYbmlrDjgZ/jgarmpbXluqbjga7osqflm7Dnt5rjga/jgIEyMDE35bm044GuUFBQ44Gr5Z+644Gl44GE44Gm44GE44KL44CC44GT44GT44Gn44Gv44CB44GT44Gu5aSJ5YyW44Go44Gd44KM44GM5LiW55WM44Gu6LKn5Zuw44Gu5ris5a6a44Gr5L2V44KS5oSP5ZGz44GZ44KL44GL44Gr6Zai44GZ44KL6Kmz57Sw5oOF5aCx44KS44GU6Kan44GE44Gf44Gg44GR44G+44GZ44CCCgrjgZ3jgZPjgafjgIHjgZPjga7os7zosrflipvlubPkvqHvvIhQUFA6IHB1cmNoYXNpbmcgcG93ZXIgcGFyaXRpZXPvvInjgpLjgb7jgZrjga/jgIHoqr/jgbnjgabjgb/jgb7jgZfjgofjgYbjgILlm73jgoTjgIHlnLDln5/jgZTjgajjga7jgIFHRFAsIFBQUCDvvIjlm73lhoXnt4/nlJ/nlKPvvIhHcm9zcyBEb21lc3RpYyBQcm9kb2N077yJ77yJ44KS44CB5Lq65Y+j44Gn5Ymy44Gj44Gf44CB5LiA5Lq65b2T44Gf44KK44Gu44CBR0RQIFBQUCDjgafjgZnjgIIyMDE35bm044KS5Z+65rqW44Go44GX44Gm44CB44Kk44Oz44OV44Os546H44KS6Kq/5pW044GX44CB44OJ44Or5o+b566X44GV44KM44Gm44GE44G+44GZ44CC57eP5Lq65Y+j44Gu5oyH5qiZ44KC5L2/44GE44G+44GZ44CCCgotICAgR0RQIHBlciBjYXBpdGEsIFBQUCAoY29uc3RhbnQgMjAxNyBpbnRlcm5hdGlvbmFsIFwkKTogTlkuR0RQLlBDQVAuUFAuS0QKCkdEUCBwZXIgY2FwaXRhLCBQUFAgKGNvbnN0YW50IDIwMTcgaW50ZXJuYXRpb25hbCBcJCkg44KS44CB5oyH5qiZ5ZCN77yISW5kaWNhdG9yIE5hbWXvvInjgajjgYTjgYTjgIFOWS5HRFAuUENBUC5QUC5LRCDjgpLjgIHmjIfmqJnjgrPjg7zjg4nvvIhJbmRpY2F0b3IgQ29kZe+8ieOBqOiogOOBhOOBvuOBmeOAguW+jOiAheOCkuOAgVdESe+8iOS4lueVjOmWi+eZuuaMh+aomeOAgVdvcmxkIERldmVsb3BtZW50IEluZGljYXRvcu+8ieOBqOWRvOOBtuOBk+OBqOOCguOBguOCiuOBvuOBmeOAggoKIyMjIOa6luWCmQoKU3RlcCAxLiDvvIhSIOOBq+apn+iDveOCkuS7mOOBkeWKoOOBiOOCi++8ieODkeODg+OCseODvOOCuOOBruOCpOODs+OCueODiOODvOODq++8iOacgOWIneOBoOOBke+8iQoKYGBge3IgZXZhbCA9IEZBTFNFfQppbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQppbnN0YWxsLnBhY2thZ2VzKCJXREkiKQppbnN0YWxsLnBhY2thZ2VzKCdzaG93dGV4dCcpCmBgYAoKU3RlcCAyLiDjg5Hjg4PjgrHjg7zjgrjjgpLkvb/jgYjjgovjgojjgYbjgavoqq3jgb/ovrzjgb/jgb7jgZnjgIIKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShXREkpCmxpYnJhcnkoc2hvd3RleHQpCnNob3d0ZXh0X2F1dG8oRkFMU0UpCiMgc2hvd3RleHRfYXV0bygpICMgZm9yIFdvcmQgcmVtb3ZlICMgCmBgYAoKU3RlcCAzLiDjg4fjg7zjgr/jgpLkv53lrZjjgZnjgovjgZ/jgoHjga4gZGF0YSDjgajjgYTjgYblkI3liY3jga7jg4fjgqPjg6zjgq/jg4jjg6rvvIjjg5Xjgqnjg6vjg4Djg7zvvInjgpLkvZzmiJDjgZfjgb7jgZnjgILvvIjmnIDliJ3jgaDjgZHvvIkKCmBgYHtyIGNyZWF0ZS1kaXJzfQpkaXIuY3JlYXRlKCJkYXRhIikKYGBgCgpTdGVwIDQuIOOCqOODqeODvOOBjOeUn+OBmOOBn+aZguOBq+OAgeiqv+OBueOChOOBmeOBhOOBruOBp+OAgSfjgrfjgrnjg4bjg6DoqIDoqp7vvIhTeXN0ZW0gTGFuZ3VhZ2XvvIknIOOCkuiLseiqnuOBq+OBl+OBpuOBiuOBjeOBvuOBmeOAgu+8iOacgOWIneOBoOOBke+8iQoKYGBge3IgZXZhbCA9IEZBTFNFfQpTeXMuc2V0ZW52KExBTkcgPSAiZW4iKQpgYGAKClN0ZXAgNS4g44OH44O844K/44KS6Kqt44G/6L6844G/44G+44GZ44CCV0RJIOODkeODg+OCseODvOOCuOOCkuOBpOOBi+OBhuOBqOOAgeewoeWNmOOBq+OAgeODh+ODvOOCv+OCkuiqreOBv+i+vOOCgOOBk+OBqOOBjOOBp+OBjeOBvuOBmeOAguOCj+OBi+OCiuOChOOBmeOBhOWQjeWJje+8iGdkcHBjYXAsIHBvcO+8ieOCkuOBpOOBkeOAgeS6uuWPo++8iHBvcO+8ieOCguiqreOBv+i+vOOCk+OBp+OBiuOBjeOBvuOBmeOAgmV4dHJhID0gVFJVRSDjgajjgZfjgabjgYrjgY/jgajjgIHkvb/jgYTmg4XloLHjgpLkuIDnt5Ljgavoqq3jgb/ovrzjgoDjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIKCmBgYHtyIGNhY2hlID0gVFJVRX0KZGZfcGNhcCA8LSBXREkoaW5kaWNhdG9yID0gYyhnZHBwY2FwID0gIk5ZLkdEUC5QQ0FQLlBQLktEIiksIGV4dHJhID0gVFJVRSkKYGBgCgpTdGVwIDYuIOODh+ODvOOCv+OCkuOBv+OBpuOBv+OBvuOBmeOAggoKYGBge3J9CmhlYWQoZGZfcGNhcCkKYGBgCgpTdGVwIDcuIOODh+ODvOOCv+OBruWIl++8iGNvbHVtbnPjgIHlpInmlbDjgIB2YXJpYWJsZXPvvInjga/jganjga7jgojjgYbjgarjgoLjga7jgYzjgYLjgovjgYvjgpLooajnpLrjgZfjgb7jgZnjgIIKCmBgYHtyfQpzdHIoZGZfcGNhcCkKYGBgCgpTdGVwIDguIOW/heimgeOBquWIl+OBoOOBkeWPluOCiuWHuuOBl+OBvuOBmeOAggoKYGBge3J9CmRmX3BjYXAgPC0gZGZfcGNhcCB8PiBzZWxlY3QoYygxLDIsNCw1LDgsMTIpKQpoZWFkKGRmX3BjYXApCmBgYAoKU3RlcCA5LiDvvIjjgaHjgofjgaPjgajpq5jluqbjgafjgZnjgYzvvIlyZWdpb24sIGluY29tZSwgbGVuZGluZyDjgavjga/jgIHjganjga7jgojjgYbjgarjgoLjga7jgYzjgYLjgovjgYvjgIHjgb/jgabjgb/jgb7jgZnjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IHNlbGVjdChyZWdpb24sIGluY29tZSkgfD4gbGFwcGx5KHVuaXF1ZSkKYGBgCgojIyMg6KaW6Kaa5YyW77yIVmlzdWFsaXphdGlvbu+8iQoK5ZuzIDEuIOS4lueVjOOBruOAgEdEUCBwZXIgQ2FwaXRhIOOBruaOqOenu++8iOe1jOW5tOWkieWMlu+8ieOCkuimi+OBpuOBv+OBvuOBmeOAggoKYGBge3J9CkNPVU5UUlkgPC0gIldvcmxkIgpkZl9wY2FwIHw+IGZpbHRlcihjb3VudHJ5ID09IENPVU5UUlkpIHw+IGRyb3BfbmEoZ2RwcGNhcCkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIGdkcHBjYXApKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuS4lueVjOOBruS4gOS6uuW9k+OBn+OCiuOBriBHRFAg44Gu5bmz5Z2H44Gu5o6o56e7IikKYGBgCgrlm7MgMi4gTG93IEluY29tZSDjga4g5o6o56e744KS44G/44Gm44G/44G+44GX44KH44GG44CCCgpgYGB7cn0KQ09VTlRSWSA8LSAiTG93IGluY29tZSIKZGZfcGNhcCB8PiBmaWx0ZXIoY291bnRyeSA9PSBDT1VOVFJZKSB8PiBkcm9wX25hKGdkcHBjYXApIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCBnZHBwY2FwKSkgKyBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZSA9ICLkvY7miYDlvpflm73jga7kuIDkurrlvZPjgZ/jgorjga4gR0RQIOOBruW5s+Wdh+OBruaOqOenuyIpCmBgYAoK5ZuzIDMuIExvdyBJbmNvbWUg44GuIOaOqOenu+OCkuOAge+8keaXpeOBguOBn+OCiuOBq+WkieOBiOOBpuOBv+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CkNPVU5UUlkgPC0gIkxvdyBpbmNvbWUiCmRmX3BjYXAgfD4gZmlsdGVyKGNvdW50cnkgPT0gQ09VTlRSWSkgfD4gZHJvcF9uYShnZHBwY2FwKSB8PgogIGdncGxvdChhZXMoeWVhciwgZ2RwcGNhcC8zNjUpKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuS4lueVjOOBru+8keaXpeS4gOS6uuW9k+OBn+OCiuOBriBHRFAg44Gu5bmz5Z2H44Gu5o6o56e7IikKYGBgCgrlm7MgNC4gMjAyMuW5tOOBruOAgUxvdyBJbmNvbWUgQ291bnRyeSDjgavjgaTjgYTjgabjgIFHRFAgcGVyIENhcGl0YSDjga7lsJHjgarjgYTjgYvjgonpoIbjgavkuKbjgbnjgabjgb/jgb7jgZfjgofjgYbjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IGZpbHRlcih5ZWFyID09IDIwMjIsIHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IAogIGZpbHRlcihpbmNvbWUgPT0gIkxvdyBpbmNvbWUiKSB8PgogIGRyb3BfbmEoZ2RwcGNhcCkgfD4gYXJyYW5nZShnZHBwY2FwKQpgYGAKCuWbsyA1LiDkuIDkurrlvZPjgZ/jgorjga5HRFAg44GuMjAyMuW5tOOBruWIhuW4g+OCkuOBv+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX3BjYXAgfD4gZmlsdGVyKHllYXIgPT0gMjAyMiwgcmVnaW9uICE9ICJBZ2dyZWdhdGVzIikgfD4gZHJvcF9uYShnZHBwY2FwKSB8PiAKICBnZ3Bsb3QoYWVzKGdkcHBjYXApKSArIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMTAwMDApICsKICBsYWJzKHRpdGxlID0gIjIwMjLlubTjga4g5LiA5Lq65b2T44Gf44KK44GuIEdEUCDjga7lm73jga7liIbluIMiKQpgYGAKCuWbsyA2LiDlnLDln5/jgZTjgajjgavoibLliIbjgZHjgZfjgabjgb/jgabjgb/jgb7jgZfjgofjgYbjgIIKCmBgYHtyfQpkZl9wY2FwIHw+IGZpbHRlcih5ZWFyID09IDIwMjIsIHJlZ2lvbiAhPSAiQWdncmVnYXRlcyIpIHw+IAogIGRyb3BfbmEoZ2RwcGNhcCkgfD4gCiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBmaWxsID0gcmVnaW9uKSkgKyAKICBnZW9tX2hpc3RvZ3JhbShjb2wgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAwLjIsIGJpbndpZHRoID0gMTAwMDApICsKICBsYWJzKHRpdGxlID0gIjIwMjLlubTjga4g5LiA5Lq65b2T44Gf44KK44GuIEdEUCDjga7lm73jga7liIbluIMiLCAKICAgICAgIHN1YnRpdGxlID0gIuWcsOWfn+aDheWgseS7mOOBjSIpCmBgYAoK5ZuzIDcuIOeuseOBsuOBkuWbs+OBp+imi+OBpuOBv+OBvuOBl+OCh+OBhuOAggoKYGBge3J9CmRmX3BjYXAgfD4gZmlsdGVyKHllYXIgPT0gMjAyMCkgfD4gZHJvcF9uYShnZHBwY2FwKSB8PiAKICBmaWx0ZXIoaW5jb21lICE9ICJBZ2dyZWdhdGVzIikgfD4gCiAgZ2dwbG90KGFlcyhnZHBwY2FwLCBmYWN0b3IoaW5jb21lLCBsZXZlbHMgPSBjKCJIaWdoIGluY29tZSIsICJVcHBlciBtaWRkbGUgaW5jb21lIiwgIkxvd2VyIG1pZGRsZSBpbmNvbWUiLCAiTG93IGluY29tZSIpKSwgZmlsbCA9IGluY29tZSkpICsgZ2VvbV9ib3hwbG90KCkgKyBzY2FsZV94X2xvZzEwKCkgKwogIGxhYnMoeSA9ICIiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICLkuIDkurrlvZPjgZ/jgorjga4gR0RQIOOBruaJgOW+l+ODrOODmeODq+avjuOBruWIhuW4gyIpCmBgYAoKIyMjIOiqsumhjAoKLSAgIOWbszHjgYvjgonlm7M3IOOBneOCjOOBnuOCjOOBi+OCieOBqeOCk+OBquOBk+OBqOOBjOWIhuOBi+OCiuOBvuOBl+OBn+OBi+OAggoKLSAgIOWbszHjgYvjgonlm7M3IOOBp+OCj+OBi+OCieOBquOBi+OBo+OBn+OBk+OBqOOBp+OAgeOBk+OBruODh+ODvOOCv+OBi+OCieOAgeOBqeOBruOCiOOBhuOBquOBk+OBqOOBjOefpeOCiuOBn+OBhOOBp+OBmeOBi+OAggoKLSAgIOOBk+OCk+OBquWbs+OBr+OAgeaPj+OBkeOBquOBhOOBi+OBquOBqeOBruaPkOahiOOBr+OBguOCiuOBvuOBmeOBi+OAggoKLSAgIOalteW6puOBruiyp+WbsOOBruS6uuOBq+OBpOOBhOOBpuefpeOCiuOBn+OBhOOBqOOBjeOBq+OBr+OAgeOBguOBqOOBqeOBruOCiOOBhuOBquaDheWgseOBjOW/heimgeOBp+OBl+OCh+OBhuOBi+OAggo=