The maps were produced prompt action to requirement by Universities and public sector. This map series include climate change projection map and (%) change from the baseline on two RCPs (i.e RCP 4.5 and 8.5). The maps were produced using R deploying terra, tidyverse, tmap, raster packages.
Climate Projection - RCP 4.5
The whole country
map1 <- tm_shape(raster(Prec_45_2040_PM))+
tm_raster(palette = "-viridis", title = "Preci - 2040 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(Prec_45_2060_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2060 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(Prec_45_2080_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2080 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(Prec_45_2100_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2100 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin Township
plot(crop(Prec_45_2020_PM, ymt), main = "Precipitation Projection Scenario for 2020, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2040_PM, ymt), main = "Precipitation Projection Scenario for 2040, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2060_PM, ymt), main = "Precipitation Projection Scenario for 2060, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2080_PM, ymt), main = "Precipitation Projection Scenario for 2080, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2100_PM, ymt), main = "Precipitation Projection Scenario for 2100, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

(%) Change from Baseline
Whole country
map1 <- tm_shape(raster(Prec_45_2040_CM))+
tm_raster(palette = "BuGn", title = "Preci - 2040 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(Prec_45_2060_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2060 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(Prec_45_2080_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2080 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(Prec_45_2100_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2100 RCP45") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin Township
plot(crop(Prec_45_2020_CM, ymt), main = "Precipitation Scenario for 2020- % Change from baseline, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2040_CM, ymt), main = "Precipitation Scenario for 2040 - % Change from baseline, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2060_CM, ymt), main = "Precipitation Scenario for 2060 - % Change from baseline, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_45_2080_CM, ymt), main = "Precipitation Scenario for 2080 - % Change from baseline, RCP 4.5 \nYamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(Prec_45_2100_CM, ymt), main = "Precipitation Scenario for 2100 - % Change from baseline, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

RCP 8.5
The Whole Country
map1 <- tm_shape(raster(Prec_85_2040_PM))+
tm_raster(palette = "-viridis", title = "Preci - 2040 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(Prec_85_2060_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2060 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(Prec_85_2080_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2080 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(Prec_85_2100_PM))+
tm_raster(palette = "-viridis", style = "pretty", title = "Preci - 2100 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin
plot(crop(Prec_85_2020_PM, ymt), main = "Precipitation Projection Scenario for 2020, RCP 8.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(Prec_85_2040_PM, ymt), main = "Precipitation Projection Scenario for 2040, RCP 8.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(Prec_85_2060_PM, ymt), main = "Precipitation Projection Scenario for 2060, RCP 8.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(Prec_85_2080_PM, ymt), main = "Precipitation Projection Scenario for 2080, RCP 8.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(Prec_85_2100_PM, ymt), main = "Precipitation Projection Scenario for 2100, RCP 8.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

(%) Change from Baseline - RCP 8.5
The Whole Country
map1 <- tm_shape(raster(Prec_85_2040_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2040 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(Prec_85_2060_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2060 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(Prec_85_2080_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2080 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(Prec_85_2100_CM))+
tm_raster(palette = "BuGn", style = "pretty", title = "Preci - 2100 RCP85") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin Township
plot(crop(Prec_85_2020_CM, ymt), main = "Precipitation Scenario for 2020- % Change from baseline, RCP 8.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_85_2040_CM, ymt), main = "Precipitation Scenario for 2040- % Change from baseline, RCP 8.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_85_2060_CM, ymt), main = "Precipitation Scenario for 2060- % Change from baseline, RCP 8.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_85_2080_CM, ymt), main = "Precipitation Scenario for 2080- % Change from baseline, RCP 8.5\n Yamethin Township")
lines(ymt, col = "blue")

plot(crop(Prec_85_2100_CM, ymt), main = "Precipitation Scenario for 2100- % Change from baseline, RCP 4.5\n Yamethin Township")
lines(ymt, col = "blue")

Mean Temperature Projection RCP 4.5
Whole Country
map1 <- tm_shape(raster(TMean_45_2040_PM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2040 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(TMean_45_2060_PM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2060 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(TMean_45_2080_PM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2080 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(TMean_45_2100_PM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2100 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin Township
par(mfrow = c(1,1))
brks <- seq(0, 1, by=0.15)
nb <- length(brks)-1
plot(crop(TMean_45_2020_PM, ymt), col = rev(heat.colors(nb)),lab.breaks = brks, alpha = 1, main = "Mean Temperature Projection Scenario for 2020, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2040_PM, ymt), col = rev(heat.colors(nb)),lab.breaks = brks, main = "Mean Temperature Projection Scenario for 2040, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2060_PM, ymt), col = rev(heat.colors(nb)),lab.breaks = brks, main = "Mean Temperature Projection Scenario for 2060, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2080_PM, ymt), col = rev(heat.colors(nb)),lab.breaks = brks, main = "Mean Temperature Projection Scenario for 2080, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2100_PM, ymt), col = rev(heat.colors(nb)),lab.breaks = brks, main = "Mean Temperature Projection Scenario for 2100, RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

#plot(TMean_Ensem_Change_45, col = rev(heat.colors(20)))
ªC change from baseline RCP 4.5
Whole Country
map1 <- tm_shape(raster(TMean_45_2040_CM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2040 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map2 <- tm_shape(raster(TMean_45_2060_CM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2060 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map3 <- tm_shape(raster(TMean_45_2080_CM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2080 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
map4 <- tm_shape(raster(TMean_45_2100_CM))+
tm_raster(style = "quantile", palette = "Oranges", title = "Tmean - 2100 RCP4.5") +
tm_layout(scale=.8, legend.position = c("left","bottom"))
tmap_arrange(map1, map2, map3, map4, nrow = 2)

Yamethin Township
par(mfrow = c(1,1))
brks <- seq(0, 1, by=0.15)
nb <- length(brks)-1
plot(crop(TMean_45_2020_CM, ymt), col = rev(heat.colors(20)), alpha = 0.1, main = "Mean Temperature Projection Scenario for 2020, ºC change from baseline RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2040_CM, ymt), col = rev(heat.colors(20)), main = "Mean Temperature Projection Scenario for 2040, ºC change from baseline RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2060_CM, ymt), col = rev(heat.colors(20)), main = "Mean Temperature Projection Scenario for 2060, ºC change from baseline RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2080_CM, ymt), col = rev(heat.colors(20)), main = "Mean Temperature Projection Scenario for 2080, ºC change from baseline RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

plot(crop(TMean_45_2100_CM, ymt), col = rev(heat.colors(20)), main = "Mean Temperature Scenario for 2100, ºC change from baseline RCP 4.5 \n Yamethin Township")
lines(ymt, col = "blue", type = "l")

LS0tCnRpdGxlOiAiWWFtZXRoaW4gQ2FzZSBTdHVkeSAtIENsaW1hdGUgQ2hhbmdlIFNjZW5hcmlvcyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAotLS0KClRoZSBtYXBzIHdlcmUgcHJvZHVjZWQgcHJvbXB0IGFjdGlvbiB0byByZXF1aXJlbWVudCBieSBVbml2ZXJzaXRpZXMgYW5kIHB1YmxpYyBzZWN0b3IuIFRoaXMgbWFwIHNlcmllcyBpbmNsdWRlIGNsaW1hdGUgY2hhbmdlIHByb2plY3Rpb24gbWFwIGFuZCAoJSkgY2hhbmdlIGZyb20gdGhlIGJhc2VsaW5lIG9uIHR3byBSQ1BzIChpLmUgUkNQIDQuNSBhbmQgOC41KS4gVGhlIG1hcHMgd2VyZSBwcm9kdWNlZCB1c2luZyBSIGRlcGxveWluZyB0ZXJyYSwgdGlkeXZlcnNlLCB0bWFwLCByYXN0ZXIgcGFja2FnZXMuCgojIENsaW1hdGUgUHJvamVjdGlvbiAtIFJDUCA0LjUKIyMgVGhlIHdob2xlIGNvdW50cnkKCmBgYHtyfQptYXAxIDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzQ1XzIwNDBfUE0pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIi12aXJpZGlzIiwgdGl0bGUgPSAiUHJlY2kgLSAyMDQwIFJDUDQ1IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDIgPC0gdG1fc2hhcGUocmFzdGVyKFByZWNfNDVfMjA2MF9QTSkpKwogICAgdG1fcmFzdGVyKHBhbGV0dGUgPSAiLXZpcmlkaXMiLCBzdHlsZSA9ICJwcmV0dHkiLCB0aXRsZSA9ICJQcmVjaSAtIDIwNjAgUkNQNDUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwMyA8LSB0bV9zaGFwZShyYXN0ZXIoUHJlY180NV8yMDgwX1BNKSkrCiAgICB0bV9yYXN0ZXIocGFsZXR0ZSA9ICItdmlyaWRpcyIsIHN0eWxlID0gInByZXR0eSIsIHRpdGxlID0gIlByZWNpIC0gMjA4MCBSQ1A0NSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXA0IDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzQ1XzIxMDBfUE0pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIi12aXJpZGlzIiwgc3R5bGUgPSAicHJldHR5IiwgdGl0bGUgPSAiUHJlY2kgLSAyMTAwIFJDUDQ1IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCnRtYXBfYXJyYW5nZShtYXAxLCBtYXAyLCBtYXAzLCBtYXA0LCBucm93ID0gMikKYGBgCiMjIFlhbWV0aGluIFRvd25zaGlwCmBgYHtyfQpwbG90KGNyb3AoUHJlY180NV8yMDIwX1BNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjAyMCwgUkNQIDQuNVxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIpCmBgYAoKYGBge3J9CnBsb3QoY3JvcChQcmVjXzQ1XzIwNDBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDQwLCBSQ1AgNC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY180NV8yMDYwX1BNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjA2MCwgUkNQIDQuNVxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIpCmBgYApgYGB7cn0KcGxvdChjcm9wKFByZWNfNDVfMjA4MF9QTSwgeW10KSwgbWFpbiA9ICJQcmVjaXBpdGF0aW9uIFByb2plY3Rpb24gU2NlbmFyaW8gZm9yIDIwODAsIFJDUCA0LjVcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiKQpgYGAKYGBge3J9CnBsb3QoY3JvcChQcmVjXzQ1XzIxMDBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMTAwLCBSQ1AgNC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCgojICglKSBDaGFuZ2UgZnJvbSBCYXNlbGluZQojIyBXaG9sZSBjb3VudHJ5CmBgYHtyfQptYXAxIDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzQ1XzIwNDBfQ00pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIkJ1R24iLCB0aXRsZSA9ICJQcmVjaSAtIDIwNDAgUkNQNDUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwMiA8LSB0bV9zaGFwZShyYXN0ZXIoUHJlY180NV8yMDYwX0NNKSkrCiAgICB0bV9yYXN0ZXIocGFsZXR0ZSA9ICJCdUduIiwgc3R5bGUgPSAicHJldHR5IiwgdGl0bGUgPSAiUHJlY2kgLSAyMDYwIFJDUDQ1IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDMgPC0gdG1fc2hhcGUocmFzdGVyKFByZWNfNDVfMjA4MF9DTSkpKwogICAgdG1fcmFzdGVyKHBhbGV0dGUgPSAiQnVHbiIsIHN0eWxlID0gInByZXR0eSIsIHRpdGxlID0gIlByZWNpIC0gMjA4MCBSQ1A0NSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXA0IDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzQ1XzIxMDBfQ00pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIkJ1R24iLCBzdHlsZSA9ICJwcmV0dHkiLCB0aXRsZSA9ICJQcmVjaSAtIDIxMDAgUkNQNDUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKdG1hcF9hcnJhbmdlKG1hcDEsIG1hcDIsIG1hcDMsIG1hcDQsIG5yb3cgPSAyKQpgYGAKCiMjIFlhbWV0aGluIFRvd25zaGlwCmBgYHtyfQpwbG90KGNyb3AoUHJlY180NV8yMDIwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwMjAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgNC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY180NV8yMDQwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwNDAgLSAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgNC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIpCmBgYApgYGB7cn0KcGxvdChjcm9wKFByZWNfNDVfMjA2MF9DTSwgeW10KSwgbWFpbiA9ICJQcmVjaXBpdGF0aW9uIFNjZW5hcmlvIGZvciAyMDYwIC0gJSBDaGFuZ2UgZnJvbSBiYXNlbGluZSwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiKQpgYGAKYGBge3J9CnBsb3QoY3JvcChQcmVjXzQ1XzIwODBfQ00sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBTY2VuYXJpbyBmb3IgMjA4MCAtICUgQ2hhbmdlIGZyb20gYmFzZWxpbmUsIFJDUCA0LjUgXG5ZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQpgYGAKYGBge3J9CnBsb3QoY3JvcChQcmVjXzQ1XzIxMDBfQ00sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBTY2VuYXJpbyBmb3IgMjEwMCAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgNC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAojIyBSQ1AgOC41CiMjIFRoZSBXaG9sZSBDb3VudHJ5CgpgYGB7cn0KbWFwMSA8LSB0bV9zaGFwZShyYXN0ZXIoUHJlY184NV8yMDQwX1BNKSkrCiAgICB0bV9yYXN0ZXIocGFsZXR0ZSA9ICItdmlyaWRpcyIsIHRpdGxlID0gIlByZWNpIC0gMjA0MCBSQ1A4NSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXAyIDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzg1XzIwNjBfUE0pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIi12aXJpZGlzIiwgc3R5bGUgPSAicHJldHR5IiwgdGl0bGUgPSAiUHJlY2kgLSAyMDYwIFJDUDg1IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDMgPC0gdG1fc2hhcGUocmFzdGVyKFByZWNfODVfMjA4MF9QTSkpKwogICAgdG1fcmFzdGVyKHBhbGV0dGUgPSAiLXZpcmlkaXMiLCBzdHlsZSA9ICJwcmV0dHkiLCB0aXRsZSA9ICJQcmVjaSAtIDIwODAgUkNQODUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwNCA8LSB0bV9zaGFwZShyYXN0ZXIoUHJlY184NV8yMTAwX1BNKSkrCiAgICB0bV9yYXN0ZXIocGFsZXR0ZSA9ICItdmlyaWRpcyIsIHN0eWxlID0gInByZXR0eSIsIHRpdGxlID0gIlByZWNpIC0gMjEwMCBSQ1A4NSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQp0bWFwX2FycmFuZ2UobWFwMSwgbWFwMiwgbWFwMywgbWFwNCwgbnJvdyA9IDIpCmBgYAoKIyMgWWFtZXRoaW4KYGBge3J9CnBsb3QoY3JvcChQcmVjXzg1XzIwMjBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDIwLCBSQ1AgOC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYApgYGB7cn0KCnBsb3QoY3JvcChQcmVjXzg1XzIwNDBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDQwLCBSQ1AgOC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAoKYGBge3J9CnBsb3QoY3JvcChQcmVjXzg1XzIwNjBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDYwLCBSQ1AgOC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAoKYGBge3J9CnBsb3QoY3JvcChQcmVjXzg1XzIwODBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDgwLCBSQ1AgOC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAoKYGBge3J9CnBsb3QoY3JvcChQcmVjXzg1XzIxMDBfUE0sIHltdCksIG1haW4gPSAiUHJlY2lwaXRhdGlvbiBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMTAwLCBSQ1AgOC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAojICglKSBDaGFuZ2UgZnJvbSBCYXNlbGluZSAtIFJDUCA4LjUKIyMgVGhlIFdob2xlIENvdW50cnkKCmBgYHtyfQptYXAxIDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzg1XzIwNDBfQ00pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIkJ1R24iLCBzdHlsZSA9ICJwcmV0dHkiLCB0aXRsZSA9ICJQcmVjaSAtIDIwNDAgUkNQODUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwMiA8LSB0bV9zaGFwZShyYXN0ZXIoUHJlY184NV8yMDYwX0NNKSkrCiAgICB0bV9yYXN0ZXIocGFsZXR0ZSA9ICJCdUduIiwgc3R5bGUgPSAicHJldHR5IiwgdGl0bGUgPSAiUHJlY2kgLSAyMDYwIFJDUDg1IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDMgPC0gdG1fc2hhcGUocmFzdGVyKFByZWNfODVfMjA4MF9DTSkpKwogICAgdG1fcmFzdGVyKHBhbGV0dGUgPSAiQnVHbiIsIHN0eWxlID0gInByZXR0eSIsIHRpdGxlID0gIlByZWNpIC0gMjA4MCBSQ1A4NSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXA0IDwtIHRtX3NoYXBlKHJhc3RlcihQcmVjXzg1XzIxMDBfQ00pKSsKICAgIHRtX3Jhc3RlcihwYWxldHRlID0gIkJ1R24iLCBzdHlsZSA9ICJwcmV0dHkiLCB0aXRsZSA9ICJQcmVjaSAtIDIxMDAgUkNQODUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKdG1hcF9hcnJhbmdlKG1hcDEsIG1hcDIsIG1hcDMsIG1hcDQsIG5yb3cgPSAyKQpgYGAKCiMjIFlhbWV0aGluIFRvd25zaGlwCmBgYHtyfQpwbG90KGNyb3AoUHJlY184NV8yMDIwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwMjAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgOC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY184NV8yMDQwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwNDAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgOC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY184NV8yMDYwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwNjAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgOC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY184NV8yMDgwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIwODAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgOC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCmBgYHtyfQpwbG90KGNyb3AoUHJlY184NV8yMTAwX0NNLCB5bXQpLCBtYWluID0gIlByZWNpcGl0YXRpb24gU2NlbmFyaW8gZm9yIDIxMDAtICAlIENoYW5nZSBmcm9tIGJhc2VsaW5lLCBSQ1AgNC41XG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIikKYGBgCiMgTWVhbiBUZW1wZXJhdHVyZSBQcm9qZWN0aW9uIFJDUCA0LjUKIyMgV2hvbGUgQ291bnRyeQoKYGBge3J9Cm1hcDEgPC0gdG1fc2hhcGUocmFzdGVyKFRNZWFuXzQ1XzIwNDBfUE0pKSsKICAgIHRtX3Jhc3RlcihzdHlsZSA9ICJxdWFudGlsZSIsIHBhbGV0dGUgPSAiT3JhbmdlcyIsIHRpdGxlID0gIlRtZWFuIC0gMjA0MCBSQ1A0LjUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwMiA8LSB0bV9zaGFwZShyYXN0ZXIoVE1lYW5fNDVfMjA2MF9QTSkpKwogICAgdG1fcmFzdGVyKHN0eWxlID0gInF1YW50aWxlIiwgcGFsZXR0ZSA9ICJPcmFuZ2VzIiwgdGl0bGUgPSAiVG1lYW4gLSAyMDYwIFJDUDQuNSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXAzIDwtIHRtX3NoYXBlKHJhc3RlcihUTWVhbl80NV8yMDgwX1BNKSkrCiAgICB0bV9yYXN0ZXIoc3R5bGUgPSAicXVhbnRpbGUiLCBwYWxldHRlID0gIk9yYW5nZXMiLCB0aXRsZSA9ICJUbWVhbiAtIDIwODAgUkNQNC41IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDQgPC0gdG1fc2hhcGUocmFzdGVyKFRNZWFuXzQ1XzIxMDBfUE0pKSsKICAgIHRtX3Jhc3RlcihzdHlsZSA9ICJxdWFudGlsZSIsIHBhbGV0dGUgPSAiT3JhbmdlcyIsICB0aXRsZSA9ICJUbWVhbiAtIDIxMDAgUkNQNC41IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCnRtYXBfYXJyYW5nZShtYXAxLCBtYXAyLCBtYXAzLCBtYXA0LCBucm93ID0gMikKYGBgCgojIyBZYW1ldGhpbiBUb3duc2hpcApgYGB7cn0KcGFyKG1mcm93ID0gYygxLDEpKQpicmtzIDwtIHNlcSgwLCAxLCBieT0wLjE1KSAKbmIgPC0gbGVuZ3RoKGJya3MpLTEgCnBsb3QoY3JvcChUTWVhbl80NV8yMDIwX1BNLCB5bXQpLCBjb2wgPSByZXYoaGVhdC5jb2xvcnMobmIpKSxsYWIuYnJlYWtzID0gYnJrcywgYWxwaGEgPSAxLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjAyMCwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIwNDBfUE0sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygxMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjA0MCwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIwNjBfUE0sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygxMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjA2MCwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIwODBfUE0sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygxMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjA4MCwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIxMDBfUE0sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygxMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjEwMCwgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQpgYGAKCmBgYHtyfQojcGxvdChUTWVhbl9FbnNlbV9DaGFuZ2VfNDUsIGNvbCA9IHJldihoZWF0LmNvbG9ycygyMCkpKQoKYGBgCgojIMKqQyBjaGFuZ2UgZnJvbSBiYXNlbGluZSBSQ1AgNC41CiMjIFdob2xlIENvdW50cnkKYGBge3J9Cm1hcDEgPC0gdG1fc2hhcGUocmFzdGVyKFRNZWFuXzQ1XzIwNDBfQ00pKSsKICAgIHRtX3Jhc3RlcihzdHlsZSA9ICJxdWFudGlsZSIsIHBhbGV0dGUgPSAiT3JhbmdlcyIsIHRpdGxlID0gIlRtZWFuIC0gMjA0MCBSQ1A0LjUiKSArCiAgICB0bV9sYXlvdXQoc2NhbGU9LjgsIGxlZ2VuZC5wb3NpdGlvbiA9IGMoImxlZnQiLCJib3R0b20iKSkKbWFwMiA8LSB0bV9zaGFwZShyYXN0ZXIoVE1lYW5fNDVfMjA2MF9DTSkpKwogICAgdG1fcmFzdGVyKHN0eWxlID0gInF1YW50aWxlIiwgcGFsZXR0ZSA9ICJPcmFuZ2VzIiwgdGl0bGUgPSAiVG1lYW4gLSAyMDYwIFJDUDQuNSIpICsKICAgIHRtX2xheW91dChzY2FsZT0uOCwgbGVnZW5kLnBvc2l0aW9uID0gYygibGVmdCIsImJvdHRvbSIpKQptYXAzIDwtIHRtX3NoYXBlKHJhc3RlcihUTWVhbl80NV8yMDgwX0NNKSkrCiAgICB0bV9yYXN0ZXIoc3R5bGUgPSAicXVhbnRpbGUiLCBwYWxldHRlID0gIk9yYW5nZXMiLCB0aXRsZSA9ICJUbWVhbiAtIDIwODAgUkNQNC41IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCm1hcDQgPC0gdG1fc2hhcGUocmFzdGVyKFRNZWFuXzQ1XzIxMDBfQ00pKSsKICAgIHRtX3Jhc3RlcihzdHlsZSA9ICJxdWFudGlsZSIsIHBhbGV0dGUgPSAiT3JhbmdlcyIsICB0aXRsZSA9ICJUbWVhbiAtIDIxMDAgUkNQNC41IikgKwogICAgdG1fbGF5b3V0KHNjYWxlPS44LCBsZWdlbmQucG9zaXRpb24gPSBjKCJsZWZ0IiwiYm90dG9tIikpCnRtYXBfYXJyYW5nZShtYXAxLCBtYXAyLCBtYXAzLCBtYXA0LCBucm93ID0gMikKYGBgCgojIyBZYW1ldGhpbiBUb3duc2hpcApgYGB7cn0KcGFyKG1mcm93ID0gYygxLDEpKQpicmtzIDwtIHNlcSgwLCAxLCBieT0wLjE1KSAKbmIgPC0gbGVuZ3RoKGJya3MpLTEgCnBsb3QoY3JvcChUTWVhbl80NV8yMDIwX0NNLCB5bXQpLCBjb2wgPSByZXYoaGVhdC5jb2xvcnMoMjApKSwgYWxwaGEgPSAwLjEsIG1haW4gPSAiTWVhbiBUZW1wZXJhdHVyZSBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDIwLCDCukMgY2hhbmdlIGZyb20gYmFzZWxpbmUgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIwNDBfQ00sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygyMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgUHJvamVjdGlvbiBTY2VuYXJpbyBmb3IgMjA0MCwgwrpDIGNoYW5nZSBmcm9tIGJhc2VsaW5lIFJDUCA0LjUgXG4gWWFtZXRoaW4gVG93bnNoaXAiKQpsaW5lcyh5bXQsIGNvbCA9ICJibHVlIiwgdHlwZSA9ICJsIikKCnBsb3QoY3JvcChUTWVhbl80NV8yMDYwX0NNLCB5bXQpLCBjb2wgPSByZXYoaGVhdC5jb2xvcnMoMjApKSwgbWFpbiA9ICJNZWFuIFRlbXBlcmF0dXJlIFByb2plY3Rpb24gU2NlbmFyaW8gZm9yIDIwNjAsIMK6QyBjaGFuZ2UgZnJvbSBiYXNlbGluZSBSQ1AgNC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCgpwbG90KGNyb3AoVE1lYW5fNDVfMjA4MF9DTSwgeW10KSwgY29sID0gcmV2KGhlYXQuY29sb3JzKDIwKSksIG1haW4gPSAiTWVhbiBUZW1wZXJhdHVyZSBQcm9qZWN0aW9uIFNjZW5hcmlvIGZvciAyMDgwLCDCukMgY2hhbmdlIGZyb20gYmFzZWxpbmUgUkNQIDQuNSBcbiBZYW1ldGhpbiBUb3duc2hpcCIpCmxpbmVzKHltdCwgY29sID0gImJsdWUiLCB0eXBlID0gImwiKQoKcGxvdChjcm9wKFRNZWFuXzQ1XzIxMDBfQ00sIHltdCksIGNvbCA9IHJldihoZWF0LmNvbG9ycygyMCkpLCBtYWluID0gIk1lYW4gVGVtcGVyYXR1cmUgU2NlbmFyaW8gZm9yIDIxMDAsIMK6QyBjaGFuZ2UgZnJvbSBiYXNlbGluZSBSQ1AgNC41IFxuIFlhbWV0aGluIFRvd25zaGlwIikKbGluZXMoeW10LCBjb2wgPSAiYmx1ZSIsIHR5cGUgPSAibCIpCmBgYAoK