Codebook
| country_name |
|
| cow_code |
|
| project |
|
| agreed_usd |
|
| agreed_kr |
|
| total_usd |
|
| total_kr |
|
| net_usd |
|
| net_kr |
|
| gift_value_usd |
|
| gift_value_kr |
|
| gift_pc |
|
| COVID_gift |
|
| koraid_gift |
|
| north |
Russia, China, Mongolia, Kazakhstan |
| south |
Brunei, Cambodia, India, Indonesia, Laos, Malaysia, Myanmar, Philippines, Singapore, Thailand, Vietnam |
| eth_fraction |
Ethnic fractionalization (Source: CREG Project) |
| eth_polarized |
Ethnic polarizarion (Source: CREG Project) |
| rel_fraction |
Religious fractionalization (Source: CREG Project) |
| rel_polarized |
Religious fractionalization (Source: CREG Project) |
| rugged |
Level of terrain ruggedness in country (Source: Gibler and Miller, 2014) |
| polity |
Polity Score (Source: Polity Project) |
| level_contig |
Level of contiguity 1 = direct land contiguity. 2 = separated by max 12 miles of water 3 = separated by max 24 miles. 4 = separated by max 150 miles of water 5 = separated by max 400 miles of water (Source: Correlates of War) |
| shared_igso |
number of mutual IGOs for which country is a member with South Korea (Source: Correlates of War) |
| dist_seoul |
Distance to Seoul |
| continent |
Africa, Americas, Asia, Europe, Oceania |
| income_group_name |
High, Upper Middle, Lower Middle, Low Income Country |
| pop |
World Bank population estimate |
| GDP_per_cap_constant_2010 |
World Bank GDP per capita at 2010 US dollars |
| infant_mortality |
World Bank infant deaths per 1000 live births |
| region |
East Asia & Pacific, Europe & Central Asia, Latin America & Caribbean, Middle East & North Africa, North America, South Asia, Sub-Saharan Africa |
| cases_total |
WHO total cumulative COVID cases |
| cases_total_per_100000 |
WHO total cumulative COVID cases per 100,000 population |
| deaths_total |
WHO total cumulative COVID deaths |
| death_total_per_100000 |
WHO total cumulative COVID deaths per 100,000 population |
| export_value |
Exports from ROK (Source: Korean Customs Service) |
| import_value |
Imports to ROK (Source: Korean Customs Service) |
| trade_balance |
Balance of Payments |
Descriptive Statistics
skim(kor_cov) %>%
dplyr::select(-c(numeric.p0:numeric.p100))
Data summary
| Name |
kor_cov |
| Number of rows |
174 |
| Number of columns |
43 |
| _______________________ |
|
| Column type frequency: |
|
| character |
7 |
| numeric |
36 |
| ________________________ |
|
| Group variables |
None |
Variable type: character
| country_name |
0 |
1.00 |
4 |
32 |
0 |
174 |
0 |
| continent |
2 |
0.99 |
4 |
8 |
0 |
5 |
0 |
| region_wb |
2 |
0.99 |
10 |
26 |
0 |
7 |
0 |
| income_group_name |
8 |
0.95 |
18 |
27 |
0 |
4 |
0 |
| region |
1 |
0.99 |
10 |
26 |
0 |
7 |
0 |
| region_who |
24 |
0.86 |
6 |
21 |
0 |
6 |
0 |
| country |
6 |
0.97 |
4 |
37 |
0 |
168 |
0 |
Variable type: numeric
| cow_code |
5 |
0.97 |
466.64 |
2.444800e+02 |
▆▇▇▇▃ |
| project |
93 |
0.47 |
24.57 |
3.240000e+01 |
▇▂▁▁▁ |
| agreed_usd |
0 |
1.00 |
6508522.22 |
1.879271e+07 |
▇▁▁▁▁ |
| agreed_kr |
0 |
1.00 |
7681671941.79 |
2.218032e+10 |
▇▁▁▁▁ |
| total_usd |
0 |
1.00 |
4130678.76 |
1.294224e+07 |
▇▁▁▁▁ |
| total_kr |
0 |
1.00 |
4874735540.09 |
1.527352e+10 |
▇▁▁▁▁ |
| net_usd |
0 |
1.00 |
3897431.61 |
1.274026e+07 |
▇▁▁▁▁ |
| net_kr |
0 |
1.00 |
4599473581.62 |
1.503516e+10 |
▇▁▁▁▁ |
| gift_value_usd |
0 |
1.00 |
3722901.83 |
1.135687e+07 |
▇▁▁▁▁ |
| gift_value_kr |
0 |
1.00 |
4393505757.28 |
1.340258e+10 |
▇▁▁▁▁ |
| gift_pc |
0 |
1.00 |
0.03 |
2.000000e-01 |
▇▁▁▁▁ |
| COVID_gift |
0 |
1.00 |
625810.90 |
4.294113e+06 |
▇▁▁▁▁ |
| koraid_gift |
0 |
1.00 |
2983056.92 |
1.129134e+07 |
▇▁▁▁▁ |
| north |
0 |
1.00 |
0.02 |
1.300000e-01 |
▇▁▁▁▁ |
| south |
0 |
1.00 |
0.00 |
0.000000e+00 |
▁▁▇▁▁ |
| eth_fraction |
55 |
0.68 |
0.45 |
2.500000e-01 |
▆▇▆▆▇ |
| eth_polarized |
55 |
0.68 |
0.56 |
2.100000e-01 |
▂▅▅▇▅ |
| rel_fraction |
53 |
0.70 |
0.41 |
2.100000e-01 |
▆▆▇▇▇ |
| rel_polarized |
53 |
0.70 |
0.62 |
2.700000e-01 |
▃▂▅▇▇ |
| rugged |
45 |
0.74 |
1.26 |
1.170000e+00 |
▇▃▁▁▁ |
| polity |
47 |
0.73 |
4.39 |
6.030000e+00 |
▂▂▁▃▇ |
| level_contig |
42 |
0.76 |
0.07 |
5.600000e-01 |
▇▁▁▁▁ |
| shared_igso |
42 |
0.76 |
43.84 |
1.048000e+01 |
▁▁▇▅▂ |
| dist_seoul |
42 |
0.76 |
10214.13 |
3.430590e+03 |
▁▇▇▆▁ |
| pop |
5 |
0.97 |
42423485.83 |
1.531908e+08 |
▇▁▁▁▁ |
| GDP_per_cap_constant_2010 |
10 |
0.94 |
14235.93 |
2.001703e+04 |
▇▁▁▁▁ |
| infant_mortality |
5 |
0.97 |
21.68 |
1.993000e+01 |
▇▂▂▁▁ |
| cases_total |
24 |
0.86 |
4149.31 |
4.152320e+03 |
▇▃▂▁▁ |
| cases_total_per_100000 |
24 |
0.86 |
17274.96 |
3.935720e+04 |
▇▁▁▁▁ |
| deaths_total |
24 |
0.86 |
74.61 |
9.114000e+01 |
▇▂▁▁▁ |
| death_total_per_100000 |
24 |
0.86 |
284.73 |
7.985500e+02 |
▇▁▁▁▁ |
| number_of_export |
6 |
0.97 |
50510.72 |
2.415154e+05 |
▇▁▁▁▁ |
| export_value |
6 |
0.97 |
2573188.04 |
1.150313e+07 |
▇▁▁▁▁ |
| number_of_import |
6 |
0.97 |
77301.19 |
3.765683e+05 |
▇▁▁▁▁ |
| import_value |
6 |
0.97 |
2577729.12 |
9.737862e+06 |
▇▁▁▁▁ |
| trade_balance |
6 |
0.97 |
-4541.07 |
4.404132e+06 |
▁▇▃▁▁ |
Correlation Matrices
Corrplot package
kor_cov %>%
mutate(ln_gift_pc = log(gift_pc),
ln_covid_gift = log(COVID_gift),
ln_total_aid = log(total_usd),
ln_gdp_pc = log(GDP_per_cap_constant_2010),
ln_pop = log(pop),
ln_covid_cases = log(cases_total_per_100000),
ln_dist = log(dist_seoul),
ln_export = log(export_value),
ln_import = log(import_value)) %>%
select(ln_covid_gift, ln_total_aid, ln_pop, ln_gdp_pc, ln_covid_cases, ln_export) -> kor_cov_sub
kor_cov_no_na <- na.omit(kor_cov_sub)
conf_test2 = cor.mtest(kor_cov_no_na, conf.level = 0.95)
corrplot(cor(kor_cov_no_na, method = "spearman"),
p.mat = conf_test2$p,
method = 'circle',
type = 'lower',
insig ='blank',
addCoef.col ='black',
number.cex = 0.8,
order = 'AOE',
diag = FALSE,
tl.srt = 45)

kor_cov %>%
mutate(ln_gift_pc = log(gift_pc),
ln_covid_gift = log(COVID_gift),
ln_total_aid = log(total_usd),
ln_gdp_pc = log(GDP_per_cap_constant_2010),
ln_pop = log(pop),
ln_covid_cases = log(cases_total_per_100000),
ln_dist = log(dist_seoul),
ln_export = log(export_value),
ln_import = log(import_value)) %>%
select(ln_covid_gift, ln_total_aid, ln_pop, ln_gdp_pc, ln_covid_cases, ln_export, income_group_name) -> kor_cov_sub2
GGally package
kor_cov2_no_na <- na.omit(kor_cov_sub2)
library(GGally)
kor_cov2_no_na %>%
filter(income_group_name != "High Income Country") %>%
filter(!is.na(income_group_name)) %>%
mutate(income = ifelse(income_group_name == "Low Income Country", "Low",
ifelse(income_group_name == "Lower Middle Income Country", "Middle",
ifelse(income_group_name == "Upper Middle Income Country", "Upper", income_group_name)))) %>%
select(!income_group_name) %>%
ggpairs(mapping = ggplot2::aes(colour = income),
alpha = 0.5,
upper = list(continuous = wrap("cor", size = 2.5))) +
theme(axis.text.x = element_text(angle = 70, hjust = 1),
strip.text.x = element_text(angle = 30),
strip.text.y = element_text(angle = 20))

LS0tDQp0aXRsZTogIktPUkFJRCBEQVRBU0VUIg0KYXV0aG9yOiAiUGF1bGEiDQpkYXRlOiAiOS8xLzIwMjEiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdG9jX2RlcHRoOiA1DQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KHNraW1yKQ0KbGlicmFyeShjb3VudHJ5Y29kZSkNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpsaWJyYXJ5KGNvcnJwbG90KQ0KDQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCANCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSAiYXNpcyIsIA0KICAgICAgICAgICAgICAgICAgICAgIG91dC53aWR0aCA9ICI0MDAlIikNCg0Ka29yX2NvdiA8LSByZWFkLmNzdigiQzovVXNlcnMvUGF1bGEvRGVza3RvcC9QRF9vcmlnaW5hbF9kYXRhc2V0cy9rb3JhaWRfd2hvX3RyYWRlLmNzdiIpDQoNCmtvcl9jb3YkWCA8LSBOVUxMDQoNCmBgYA0KDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge2JhY2tncm91bmQ6ICNlZWU7fQ0KICAgIA0KaDEsIGgyLCBoMyB7dGV4dC1hbGlnbjogY2VudGVyO30NCg0KYGBgDQoNCg0KIyBDb2RlYm9vaw0KDQoNClZhcmlhYmxlICB8IERlc2NyaXB0aW9uDQotLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLQ0KY291bnRyeV9uYW1lIHwNCmNvd19jb2RlIHwNCnByb2plY3QgfA0KYWdyZWVkX3VzZCB8DQphZ3JlZWRfa3IgfA0KdG90YWxfdXNkIHwNCnRvdGFsX2tyIHwNCm5ldF91c2QgfA0KbmV0X2tyIHwNCmdpZnRfdmFsdWVfdXNkIHwNCmdpZnRfdmFsdWVfa3IgfA0KZ2lmdF9wYyB8DQpDT1ZJRF9naWZ0IHwNCmtvcmFpZF9naWZ0IHwNCm5vcnRoIHwgIFJ1c3NpYSwgQ2hpbmEsIE1vbmdvbGlhLCBLYXpha2hzdGFuDQpzb3V0aCB8ICBCcnVuZWksIENhbWJvZGlhLCBJbmRpYSwgSW5kb25lc2lhLCBMYW9zLCBNYWxheXNpYSwgTXlhbm1hciwgUGhpbGlwcGluZXMsIFNpbmdhcG9yZSwgVGhhaWxhbmQsIFZpZXRuYW0NCmV0aF9mcmFjdGlvbiB8IEV0aG5pYyBmcmFjdGlvbmFsaXphdGlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpldGhfcG9sYXJpemVkIHwgRXRobmljIHBvbGFyaXphcmlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpyZWxfZnJhY3Rpb24gfCBSZWxpZ2lvdXMgZnJhY3Rpb25hbGl6YXRpb24gKFNvdXJjZTogQ1JFRyBQcm9qZWN0KQ0KcmVsX3BvbGFyaXplZCB8IFJlbGlnaW91cyBmcmFjdGlvbmFsaXphdGlvbiAoU291cmNlOiBDUkVHIFByb2plY3QpDQpydWdnZWQgfCBMZXZlbCBvZiB0ZXJyYWluIHJ1Z2dlZG5lc3MgaW4gY291bnRyeSAoU291cmNlOiBHaWJsZXIgYW5kIE1pbGxlciwgMjAxNCkNCnBvbGl0eSB8IFBvbGl0eSBTY29yZSAoU291cmNlOiBQb2xpdHkgUHJvamVjdCkNCmxldmVsX2NvbnRpZyAgfCBMZXZlbCBvZiBjb250aWd1aXR5IDEgPSBkaXJlY3QgbGFuZCBjb250aWd1aXR5LiAyID0gc2VwYXJhdGVkIGJ5IG1heCAxMiBtaWxlcyBvZiB3YXRlciAzID0gc2VwYXJhdGVkIGJ5IG1heCAyNCBtaWxlcy4gNCA9IHNlcGFyYXRlZCBieSBtYXggMTUwIG1pbGVzIG9mIHdhdGVyIDUgPSBzZXBhcmF0ZWQgYnkgbWF4IDQwMCBtaWxlcyBvZiB3YXRlciAoU291cmNlOiBDb3JyZWxhdGVzIG9mIFdhcikNCnNoYXJlZF9pZ3NvICB8IG51bWJlciBvZiBtdXR1YWwgSUdPcyBmb3Igd2hpY2ggY291bnRyeSBpcyBhIG1lbWJlciB3aXRoIFNvdXRoIEtvcmVhIChTb3VyY2U6IENvcnJlbGF0ZXMgb2YgV2FyKQ0KZGlzdF9zZW91bCAgfCBEaXN0YW5jZSB0byBTZW91bCANCmNvbnRpbmVudCAgfCBBZnJpY2EsIEFtZXJpY2FzLCBBc2lhLCBFdXJvcGUsIE9jZWFuaWENCmluY29tZV9ncm91cF9uYW1lICB8IEhpZ2gsIFVwcGVyIE1pZGRsZSwgTG93ZXIgTWlkZGxlLCBMb3cgSW5jb21lIENvdW50cnkNCnBvcCAgfCBXb3JsZCBCYW5rIHBvcHVsYXRpb24gZXN0aW1hdGUNCkdEUF9wZXJfY2FwX2NvbnN0YW50XzIwMTAgIHwgV29ybGQgQmFuayBHRFAgcGVyIGNhcGl0YSAgYXQgMjAxMCBVUyBkb2xsYXJzDQppbmZhbnRfbW9ydGFsaXR5IHwgV29ybGQgQmFuayBpbmZhbnQgZGVhdGhzIHBlciAxMDAwIGxpdmUgYmlydGhzDQpyZWdpb24gfCBFYXN0IEFzaWEgJiBQYWNpZmljLCBFdXJvcGUgJiBDZW50cmFsIEFzaWEsIExhdGluIEFtZXJpY2EgJiBDYXJpYmJlYW4sIE1pZGRsZSBFYXN0ICYgTm9ydGggQWZyaWNhLCBOb3J0aCBBbWVyaWNhLCBTb3V0aCBBc2lhLCBTdWItU2FoYXJhbiBBZnJpY2ENCmNhc2VzX3RvdGFsIHwgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgY2FzZXMNCmNhc2VzX3RvdGFsX3Blcl8xMDAwMDAgfCBXSE8gdG90YWwgY3VtdWxhdGl2ZSBDT1ZJRCBjYXNlcyBwZXIgMTAwLDAwMCBwb3B1bGF0aW9uDQpkZWF0aHNfdG90YWwgfCAgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgZGVhdGhzDQpkZWF0aF90b3RhbF9wZXJfMTAwMDAwIHwgV0hPIHRvdGFsIGN1bXVsYXRpdmUgQ09WSUQgZGVhdGhzIHBlciAxMDAsMDAwIHBvcHVsYXRpb24NCmV4cG9ydF92YWx1ZSB8IEV4cG9ydHMgZnJvbSBST0sgKFNvdXJjZTogS29yZWFuIEN1c3RvbXMgU2VydmljZSkNCmltcG9ydF92YWx1ZSB8IEltcG9ydHMgdG8gUk9LIChTb3VyY2U6IEtvcmVhbiBDdXN0b21zIFNlcnZpY2UpICAgICAgICANCnRyYWRlX2JhbGFuY2UgfCBCYWxhbmNlIG9mIFBheW1lbnRzDQoNCg0KIyBEZXNjcmlwdGl2ZSBTdGF0aXN0aWNzDQoNCmBgYHtyfQ0KDQpza2ltKGtvcl9jb3YpICU+JSANCiAgZHBseXI6OnNlbGVjdCgtYyhudW1lcmljLnAwOm51bWVyaWMucDEwMCkpICANCg0KYGBgDQoNCg0KIyBDb3JyZWxhdGlvbiBNYXRyaWNlcw0KDQojIENvcnJwbG90IHBhY2thZ2UNCg0KYGBge3J9DQoNCmtvcl9jb3YgJT4lIA0KICAgbXV0YXRlKGxuX2dpZnRfcGMgPSBsb2coZ2lmdF9wYyksDQogICAgICAgICAgbG5fY292aWRfZ2lmdCA9IGxvZyhDT1ZJRF9naWZ0KSwgDQogICAgICAgICAgbG5fdG90YWxfYWlkID0gbG9nKHRvdGFsX3VzZCksDQogICAgICAgICAgbG5fZ2RwX3BjID0gbG9nKEdEUF9wZXJfY2FwX2NvbnN0YW50XzIwMTApLA0KICAgICAgICAgIGxuX3BvcCA9IGxvZyhwb3ApLA0KICAgICAgICAgIGxuX2NvdmlkX2Nhc2VzID0gbG9nKGNhc2VzX3RvdGFsX3Blcl8xMDAwMDApLA0KICAgICAgICAgIGxuX2Rpc3QgPSBsb2coZGlzdF9zZW91bCksDQogICAgICAgICAgbG5fZXhwb3J0ID0gbG9nKGV4cG9ydF92YWx1ZSksIA0KICAgICAgICAgIGxuX2ltcG9ydCA9IGxvZyhpbXBvcnRfdmFsdWUpKSAlPiUgDQogICBzZWxlY3QobG5fY292aWRfZ2lmdCwgbG5fdG90YWxfYWlkLCBsbl9wb3AsIGxuX2dkcF9wYywgbG5fY292aWRfY2FzZXMsIGxuX2V4cG9ydCkgLT4ga29yX2Nvdl9zdWINCg0Ka29yX2Nvdl9ub19uYSA8LSBuYS5vbWl0KGtvcl9jb3Zfc3ViKQ0KDQpjb25mX3Rlc3QyID0gY29yLm10ZXN0KGtvcl9jb3Zfbm9fbmEsIGNvbmYubGV2ZWwgPSAwLjk1KSANCg0KY29ycnBsb3QoY29yKGtvcl9jb3Zfbm9fbmEsIG1ldGhvZCA9ICJzcGVhcm1hbiIpLCANCiAgICAgICAgIHAubWF0ID0gY29uZl90ZXN0MiRwLA0KICAgICAgICAgbWV0aG9kID0gJ2NpcmNsZScsDQogICAgICAgICB0eXBlID0gJ2xvd2VyJywgDQogICAgICAgICBpbnNpZyA9J2JsYW5rJywNCiAgICAgICAgIGFkZENvZWYuY29sID0nYmxhY2snLA0KICAgICAgICAgbnVtYmVyLmNleCA9IDAuOCwgDQogICAgICAgICBvcmRlciA9ICdBT0UnLCANCiAgICAgICAgIGRpYWcgPSBGQUxTRSwgDQogICAgICAgICB0bC5zcnQgPSA0NSkNCg0KYGBgDQoNCmBgYHtyfQ0KDQprb3JfY292ICU+JSANCiAgIG11dGF0ZShsbl9naWZ0X3BjID0gbG9nKGdpZnRfcGMpLA0KICAgICAgICAgIGxuX2NvdmlkX2dpZnQgPSBsb2coQ09WSURfZ2lmdCksIA0KICAgICAgICAgIGxuX3RvdGFsX2FpZCA9IGxvZyh0b3RhbF91c2QpLA0KICAgICAgICAgIGxuX2dkcF9wYyA9IGxvZyhHRFBfcGVyX2NhcF9jb25zdGFudF8yMDEwKSwNCiAgICAgICAgICBsbl9wb3AgPSBsb2cocG9wKSwNCiAgICAgICAgICBsbl9jb3ZpZF9jYXNlcyA9IGxvZyhjYXNlc190b3RhbF9wZXJfMTAwMDAwKSwNCiAgICAgICAgICBsbl9kaXN0ID0gbG9nKGRpc3Rfc2VvdWwpLA0KICAgICAgICAgIGxuX2V4cG9ydCA9IGxvZyhleHBvcnRfdmFsdWUpLCANCiAgICAgICAgICBsbl9pbXBvcnQgPSBsb2coaW1wb3J0X3ZhbHVlKSkgJT4lIA0KICAgc2VsZWN0KGxuX2NvdmlkX2dpZnQsIGxuX3RvdGFsX2FpZCwgbG5fcG9wLCBsbl9nZHBfcGMsIGxuX2NvdmlkX2Nhc2VzLCBsbl9leHBvcnQsIGluY29tZV9ncm91cF9uYW1lKSAtPiBrb3JfY292X3N1YjINCg0KYGBgDQoNCiMgR0dhbGx5IHBhY2thZ2UNCg0KYGBge3IgfQ0KDQprb3JfY292Ml9ub19uYSA8LSBuYS5vbWl0KGtvcl9jb3Zfc3ViMikNCg0KbGlicmFyeShHR2FsbHkpDQoNCmtvcl9jb3YyX25vX25hICU+JQ0KICBmaWx0ZXIoaW5jb21lX2dyb3VwX25hbWUgIT0gIkhpZ2ggSW5jb21lIENvdW50cnkiKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShpbmNvbWVfZ3JvdXBfbmFtZSkpICU+JQ0KICBtdXRhdGUoaW5jb21lID0gaWZlbHNlKGluY29tZV9ncm91cF9uYW1lID09ICJMb3cgSW5jb21lIENvdW50cnkiLCAiTG93IiwNCiAgICAgICAgICAgICAgICAgIGlmZWxzZShpbmNvbWVfZ3JvdXBfbmFtZSA9PSAiTG93ZXIgTWlkZGxlIEluY29tZSBDb3VudHJ5IiwgIk1pZGRsZSIsDQogICAgICAgICAgICAgICAgICBpZmVsc2UoaW5jb21lX2dyb3VwX25hbWUgPT0gIlVwcGVyIE1pZGRsZSBJbmNvbWUgQ291bnRyeSIsICJVcHBlciIsIGluY29tZV9ncm91cF9uYW1lKSkpKSAlPiUNCiAgc2VsZWN0KCFpbmNvbWVfZ3JvdXBfbmFtZSkgJT4lDQogIGdncGFpcnMobWFwcGluZyA9IGdncGxvdDI6OmFlcyhjb2xvdXIgPSBpbmNvbWUpLA0KICAgICAgICAgIGFscGhhID0gMC41LCANCiAgICAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJjb3IiLCBzaXplID0gMi41KSkpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA3MCwgaGp1c3QgPSAxKSwNCiAgICAgICAgc3RyaXAudGV4dC54ID0gIGVsZW1lbnRfdGV4dChhbmdsZSA9IDMwKSwNCiAgICAgICAgc3RyaXAudGV4dC55ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMjApKQ0KDQoNCmBgYA0KDQojIFBlcmZvcm1hbmNlIEFuYWx5dGljcyBwYWNrYWdlDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KFBlcmZvcm1hbmNlQW5hbHl0aWNzKQ0KDQpjaGFydC5Db3JyZWxhdGlvbihrb3JfY292X25vX25hLCANCiAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICBtZXRob2QgPSAic3BlYXJtYW4iLA0KICAgICAgICAgICAgICAgICAgY2V4LmNvciA9IDUwLCANCiAgICAgICAgICAgICAgICAgIGNleC5sYWJlbHMgPSA1MCwNCiAgICAgICAgICAgICAgICAgIGNleCA9IDEuNSwgDQogICAgICAgICAgICAgICAgICBjZXguZm9udCA9IDUpDQpgYGANCg0KDQo=