Background

This dataset was posted by Rachel Greenlee on week 5 discussion board in DATA 607. The data set includes food and feed production by country and food item from 1961 to 2013, including geocoding. The entire document about it can be found in this link: https://www.kaggle.com/dorbicycle/world-foodfeed-production

The proposed analyses (taken and modified from the post):

-Focus in on a specific country and see change over time over items .

-Compare food and feed on an item.

Libraries

library(tidyverse)
## -- Attaching packages --------------------------------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.3     v dplyr   1.0.2
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts ------------------------------------------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows

Data Transformation

Data insights and cleansing

# Get the data

raw_data <- read.csv("https://raw.githubusercontent.com/jnataky/DATA-607/master/A2_Various_dataset_transformation/FAO.csv")
# make a copy of the data frame 

copy_1 <- raw_data

# Get the insights

head(copy_1)
##   Area.Abbreviation Area.Code        Area Item.Code                     Item
## 1               AFG         2 Afghanistan      2511       Wheat and products
## 2               AFG         2 Afghanistan      2805 Rice (Milled Equivalent)
## 3               AFG         2 Afghanistan      2513      Barley and products
## 4               AFG         2 Afghanistan      2513      Barley and products
## 5               AFG         2 Afghanistan      2514       Maize and products
## 6               AFG         2 Afghanistan      2514       Maize and products
##   Element.Code Element        Unit latitude longitude X1961 X1962 X1963 X1964
## 1         5142    Food 1000 tonnes    33.94     67.71  1928  1904  1666  1950
## 2         5142    Food 1000 tonnes    33.94     67.71   183   183   182   220
## 3         5521    Feed 1000 tonnes    33.94     67.71    76    76    76    76
## 4         5142    Food 1000 tonnes    33.94     67.71   237   237   237   238
## 5         5521    Feed 1000 tonnes    33.94     67.71   210   210   214   216
## 6         5142    Food 1000 tonnes    33.94     67.71   403   403   410   415
##   X1965 X1966 X1967 X1968 X1969 X1970 X1971 X1972 X1973 X1974 X1975 X1976 X1977
## 1  2001  1808  2053  2045  2154  1819  1963  2215  2310  2335  2434  2512  2282
## 2   220   195   231   235   238   213   205   233   246   246   255   263   235
## 3    76    75    71    72    73    74    71    70    72    76    77    80    60
## 4   238   237   225   227   230   234   223   219   225   240   244   255   185
## 5   216   216   235   232   236   200   201   216   228   231   234   240   228
## 6   415   413   454   448   455   383   386   416   439   445   451   463   439
##   X1978 X1979 X1980 X1981 X1982 X1983 X1984 X1985 X1986 X1987 X1988 X1989 X1990
## 1  2454  2443  2129  2133  2068  1994  1851  1791  1683  2194  1801  1754  1640
## 2   254   270   259   248   217   217   197   186   200   193   202   191   199
## 3    65    64    64    60    55    53    51    48    46    46    47    46    43
## 4   203   198   202   189   174   167   160   151   145   145   148   145   135
## 5   234   228   226   210   199   192   182   173   170   154   148   137   144
## 6   451   440   437   407   384   371   353   334   330   298   287   265   279
##   X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998 X1999 X2000 X2001 X2002 X2003
## 1  1539  1582  1840  1855  1853  2177  2343  2407  2463  2600  2668  2776  3095
## 2   197   249   218   260   319   254   326   347   270   372   411   448   460
## 3    43    40    50    46    41    44    50    48    43    26    29    70    48
## 4   132   120   155   143   125   138   159   154   141    84    83   122   144
## 5   126    90   141   150   159   108    90    99    72    35    48    89    63
## 6   245   170   272   289   310   209   173   192   141    66    93   170   117
##   X2004 X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013
## 1  3249  3486  3704  4164  4252  4538  4605  4711  4810  4895
## 2   419   445   546   455   490   415   442   476   425   422
## 3    58   236   262   263   230   379   315   203   367   360
## 4   185    43    44    48    62    55    60    72    78    89
## 5   120   208   233   249   247   195   178   191   200   200
## 6   231    67    82    67    69    71    82    73    77    76
# Retrieve columns names

colnames(copy_1)
##  [1] "Area.Abbreviation" "Area.Code"         "Area"             
##  [4] "Item.Code"         "Item"              "Element.Code"     
##  [7] "Element"           "Unit"              "latitude"         
## [10] "longitude"         "X1961"             "X1962"            
## [13] "X1963"             "X1964"             "X1965"            
## [16] "X1966"             "X1967"             "X1968"            
## [19] "X1969"             "X1970"             "X1971"            
## [22] "X1972"             "X1973"             "X1974"            
## [25] "X1975"             "X1976"             "X1977"            
## [28] "X1978"             "X1979"             "X1980"            
## [31] "X1981"             "X1982"             "X1983"            
## [34] "X1984"             "X1985"             "X1986"            
## [37] "X1987"             "X1988"             "X1989"            
## [40] "X1990"             "X1991"             "X1992"            
## [43] "X1993"             "X1994"             "X1995"            
## [46] "X1996"             "X1997"             "X1998"            
## [49] "X1999"             "X2000"             "X2001"            
## [52] "X2002"             "X2003"             "X2004"            
## [55] "X2005"             "X2006"             "X2007"            
## [58] "X2008"             "X2009"             "X2010"            
## [61] "X2011"             "X2012"             "X2013"
# New data set for only china

china_data <- copy_1 %>%
  filter(Area.Abbreviation == "CHN")
# Consider top 3 products

china_data1 <- china_data %>%
  head(3)
# Drop unnecessary columns

china_data2 <- china_data1 [-c(2:4, 6, 8:10)]

Tidying the data frame

# Make a copy of data frame

china1 <- china_data2


# Get rid of Area abbreviation

china1 <- china1[-c(1)]
# Gather the data

china1 <- china1 %>%
  gather("Year", "n_production", 3:55)

Subset data frame in 3 for further analysis

Wheat and products
china1_w <- china1 %>%
  filter(Item == "Wheat and products")

# Arrange Year variable

china1_w$Year <- seq(1961,2013)
# Kable for tidy table

china1_w %>%
  kbl(caption = "China' Number of production of Wheat and products from 1961 to 2013", align = 'c') %>%
  kable_material(c("striped", "hover")) %>%
  row_spec(0, color = "indigo")
China’ Number of production of Wheat and products from 1961 to 2013
Item Element Year n_production
Wheat and products Food 1961 95
Wheat and products Food 1962 132
Wheat and products Food 1963 99
Wheat and products Food 1964 127
Wheat and products Food 1965 107
Wheat and products Food 1966 116
Wheat and products Food 1967 116
Wheat and products Food 1968 139
Wheat and products Food 1969 139
Wheat and products Food 1970 141
Wheat and products Food 1971 160
Wheat and products Food 1972 152
Wheat and products Food 1973 154
Wheat and products Food 1974 165
Wheat and products Food 1975 149
Wheat and products Food 1976 176
Wheat and products Food 1977 176
Wheat and products Food 1978 212
Wheat and products Food 1979 213
Wheat and products Food 1980 206
Wheat and products Food 1981 199
Wheat and products Food 1982 222
Wheat and products Food 1983 234
Wheat and products Food 1984 236
Wheat and products Food 1985 234
Wheat and products Food 1986 255
Wheat and products Food 1987 266
Wheat and products Food 1988 262
Wheat and products Food 1989 272
Wheat and products Food 1990 261
Wheat and products Food 1991 257
Wheat and products Food 1992 247
Wheat and products Food 1993 304
Wheat and products Food 1994 297
Wheat and products Food 1995 317
Wheat and products Food 1996 323
Wheat and products Food 1997 328
Wheat and products Food 1998 306
Wheat and products Food 1999 339
Wheat and products Food 2000 310
Wheat and products Food 2001 319
Wheat and products Food 2002 334
Wheat and products Food 2003 346
Wheat and products Food 2004 360
Wheat and products Food 2005 366
Wheat and products Food 2006 363
Wheat and products Food 2007 370
Wheat and products Food 2008 378
Wheat and products Food 2009 363
Wheat and products Food 2010 385
Wheat and products Food 2011 378
Wheat and products Food 2012 383
Wheat and products Food 2013 383

Rice (Milled Equivalent)

china1_r <- china1 %>%
  filter(Item == "Rice (Milled Equivalent)")

#Gather data

china1_r <- china1_r %>%
  pivot_wider(names_from = Element, values_from = n_production)


# Arrange Year variable

china1_r$Year <- seq(1961,2013)
# Kable for tidy table

china1_r %>%
  kbl(caption = " Tab2. China' Number of production of rice (Milled equivalent) from 1961 to 2013", align = 'c') %>%
  kable_material(c("striped", "hover")) %>%
  row_spec(0, color = "indigo")
Tab2. China’ Number of production of rice (Milled equivalent) from 1961 to 2013
Item Year Feed Food
Rice (Milled Equivalent) 1961 5 333
Rice (Milled Equivalent) 1962 5 315
Rice (Milled Equivalent) 1963 1 347
Rice (Milled Equivalent) 1964 2 354
Rice (Milled Equivalent) 1965 2 365
Rice (Milled Equivalent) 1966 1 330
Rice (Milled Equivalent) 1967 0 355
Rice (Milled Equivalent) 1968 0 329
Rice (Milled Equivalent) 1969 0 342
Rice (Milled Equivalent) 1970 1 332
Rice (Milled Equivalent) 1971 1 320
Rice (Milled Equivalent) 1972 0 349
Rice (Milled Equivalent) 1973 1 353
Rice (Milled Equivalent) 1974 0 356
Rice (Milled Equivalent) 1975 0 394
Rice (Milled Equivalent) 1976 0 349
Rice (Milled Equivalent) 1977 0 331
Rice (Milled Equivalent) 1978 1 332
Rice (Milled Equivalent) 1979 0 333
Rice (Milled Equivalent) 1980 0 367
Rice (Milled Equivalent) 1981 0 358
Rice (Milled Equivalent) 1982 0 347
Rice (Milled Equivalent) 1983 0 363
Rice (Milled Equivalent) 1984 0 397
Rice (Milled Equivalent) 1985 0 362
Rice (Milled Equivalent) 1986 0 369
Rice (Milled Equivalent) 1987 0 367
Rice (Milled Equivalent) 1988 0 352
Rice (Milled Equivalent) 1989 0 363
Rice (Milled Equivalent) 1990 0 363
Rice (Milled Equivalent) 1991 0 384
Rice (Milled Equivalent) 1992 0 361
Rice (Milled Equivalent) 1993 0 362
Rice (Milled Equivalent) 1994 0 340
Rice (Milled Equivalent) 1995 0 342
Rice (Milled Equivalent) 1996 0 356
Rice (Milled Equivalent) 1997 0 353
Rice (Milled Equivalent) 1998 0 345
Rice (Milled Equivalent) 1999 0 323
Rice (Milled Equivalent) 2000 0 346
Rice (Milled Equivalent) 2001 0 333
Rice (Milled Equivalent) 2002 0 353
Rice (Milled Equivalent) 2003 0 348
Rice (Milled Equivalent) 2004 0 335
Rice (Milled Equivalent) 2005 0 339
Rice (Milled Equivalent) 2006 0 333
Rice (Milled Equivalent) 2007 0 341
Rice (Milled Equivalent) 2008 0 336
Rice (Milled Equivalent) 2009 0 330
Rice (Milled Equivalent) 2010 0 334
Rice (Milled Equivalent) 2011 0 339
Rice (Milled Equivalent) 2012 0 304
Rice (Milled Equivalent) 2013 0 313

Data Analysis

Wheat and products food production over time

# Plot Wheat and products food production over time 

ggplot( data = china1_w) +
  geom_line( mapping = aes(x = Year, y = n_production), color = "red") +
  labs(title ="China' Wheat and products food production over time")

Wheat and products have been increasing signifantly over the time

Rice (Milled equivalent) food production over time

# Plot Wheat and products food production over time 

ggplot( data = china1_r) +
  geom_line( mapping = aes(x = Year, y = Food), color = "red") +
  labs(title ="China' rice (Milled equivalent) production over time")

Rice (food) production has been wavering and increasing over time. (Rice feed not even produced (See Tab2) over the time).

Take Away

In China, the wheat and products production over time has increased and seems to develop more in years to come. In the other side, rice who was a big production for China around late 60s to around early 90s started decreasing tremendously in the point where it reached the lower production in the past 50 years. While rice (food), still have some production, the feed doesn’t have any production since 1979 (see Tab2).

LS0tDQp0aXRsZTogIlByb2JsZW0gMzogV29ybGQgZm9vZC1mZWVkIHByb2R1Y3Rpb24iDQphdXRob3I6ICJKZXJlZCBBdGFreSINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogIG9wZW5pbnRybzo6bGFiX3JlcG9ydDogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50Og0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQojIyBCYWNrZ3JvdW5kDQoNCg0KPHN0eWxlPg0KZGl2LmFxdWFtYXJpbmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiM3ZmZmZDQ7IGJvcmRlci1yYWRpdXM6IDEwcHg7IHBhZGRpbmc6IDVweDt9DQo8L3N0eWxlPg0KPGRpdiBjbGFzcyA9ICJhcXVhbWFyaW5lIj4NCg0KVGhpcyBkYXRhc2V0IHdhcyBwb3N0ZWQgYnkgUmFjaGVsIEdyZWVubGVlIG9uIHdlZWsgNSBkaXNjdXNzaW9uIGJvYXJkIGluIERBVEEgNjA3Lg0KVGhlIGRhdGEgc2V0IGluY2x1ZGVzIGZvb2QgYW5kIGZlZWQgcHJvZHVjdGlvbiBieSBjb3VudHJ5IGFuZCBmb29kIGl0ZW0gDQpmcm9tIDE5NjEgdG8gMjAxMywgaW5jbHVkaW5nIGdlb2NvZGluZy4gDQpUaGUgZW50aXJlIGRvY3VtZW50IGFib3V0IGl0IGNhbiBiZSBmb3VuZCBpbiB0aGlzIGxpbms6DQpodHRwczovL3d3dy5rYWdnbGUuY29tL2RvcmJpY3ljbGUvd29ybGQtZm9vZGZlZWQtcHJvZHVjdGlvbg0KDQpUaGUgcHJvcG9zZWQgYW5hbHlzZXMgKHRha2VuIGFuZCBtb2RpZmllZCBmcm9tIHRoZSBwb3N0KTogDQoNCg0KLUZvY3VzIGluIG9uIGEgc3BlY2lmaWMgY291bnRyeSBhbmQgc2VlIGNoYW5nZSBvdmVyIHRpbWUgb3ZlciBpdGVtcyAuDQoNCi1Db21wYXJlIGZvb2QgYW5kIGZlZWQgb24gYW4gaXRlbS4NCg0KDQo8L2Rpdj4gXGhmaWxsXGJyZWFrDQoNCg0KIyMgTGlicmFyaWVzDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoa2FibGVFeHRyYSkNCmBgYA0KDQoNCiMjIERhdGEgVHJhbnNmb3JtYXRpb24NCg0KDQojIyMgRGF0YSBpbnNpZ2h0cyBhbmQgY2xlYW5zaW5nIA0KDQpgYGB7cn0NCiMgR2V0IHRoZSBkYXRhDQoNCnJhd19kYXRhIDwtIHJlYWQuY3N2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vam5hdGFreS9EQVRBLTYwNy9tYXN0ZXIvQTJfVmFyaW91c19kYXRhc2V0X3RyYW5zZm9ybWF0aW9uL0ZBTy5jc3YiKQ0KDQpgYGANCg0KYGBge3J9DQojIG1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhIGZyYW1lIA0KDQpjb3B5XzEgPC0gcmF3X2RhdGENCg0KIyBHZXQgdGhlIGluc2lnaHRzDQoNCmhlYWQoY29weV8xKQ0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBSZXRyaWV2ZSBjb2x1bW5zIG5hbWVzDQoNCmNvbG5hbWVzKGNvcHlfMSkNCg0KYGBgDQoNCmBgYHtyfQ0KIyBOZXcgZGF0YSBzZXQgZm9yIG9ubHkgY2hpbmENCg0KY2hpbmFfZGF0YSA8LSBjb3B5XzEgJT4lDQogIGZpbHRlcihBcmVhLkFiYnJldmlhdGlvbiA9PSAiQ0hOIikNCg0KYGBgDQoNCmBgYHtyfQ0KDQojIENvbnNpZGVyIHRvcCAzIHByb2R1Y3RzDQoNCmNoaW5hX2RhdGExIDwtIGNoaW5hX2RhdGEgJT4lDQogIGhlYWQoMykNCg0KYGBgDQoNCmBgYHtyfQ0KDQojIERyb3AgdW5uZWNlc3NhcnkgY29sdW1ucw0KDQpjaGluYV9kYXRhMiA8LSBjaGluYV9kYXRhMSBbLWMoMjo0LCA2LCA4OjEwKV0NCg0KYGBgDQoNCg0KIyMjIFRpZHlpbmcgdGhlIGRhdGEgZnJhbWUNCg0KYGBge3J9DQoNCiMgTWFrZSBhIGNvcHkgb2YgZGF0YSBmcmFtZQ0KDQpjaGluYTEgPC0gY2hpbmFfZGF0YTINCg0KDQojIEdldCByaWQgb2YgQXJlYSBhYmJyZXZpYXRpb24NCg0KY2hpbmExIDwtIGNoaW5hMVstYygxKV0NCiMgR2F0aGVyIHRoZSBkYXRhDQoNCmNoaW5hMSA8LSBjaGluYTEgJT4lDQogIGdhdGhlcigiWWVhciIsICJuX3Byb2R1Y3Rpb24iLCAzOjU1KQ0KDQogIA0KYGBgDQoNCiMjIyMgU3Vic2V0IGRhdGEgZnJhbWUgaW4gMyBmb3IgZnVydGhlciBhbmFseXNpcw0KDQojIyMjIyBXaGVhdCBhbmQgcHJvZHVjdHMNCg0KYGBge3J9DQoNCmNoaW5hMV93IDwtIGNoaW5hMSAlPiUNCiAgZmlsdGVyKEl0ZW0gPT0gIldoZWF0IGFuZCBwcm9kdWN0cyIpDQoNCiMgQXJyYW5nZSBZZWFyIHZhcmlhYmxlDQoNCmNoaW5hMV93JFllYXIgPC0gc2VxKDE5NjEsMjAxMykNCg0KYGBgDQoNCg0KYGBge3J9DQoNCiMgS2FibGUgZm9yIHRpZHkgdGFibGUNCg0KY2hpbmExX3cgJT4lDQogIGtibChjYXB0aW9uID0gIkNoaW5hJyBOdW1iZXIgb2YgcHJvZHVjdGlvbiBvZiBXaGVhdCBhbmQgcHJvZHVjdHMgZnJvbSAxOTYxIHRvIDIwMTMiLCBhbGlnbiA9ICdjJykgJT4lDQogIGthYmxlX21hdGVyaWFsKGMoInN0cmlwZWQiLCAiaG92ZXIiKSkgJT4lDQogIHJvd19zcGVjKDAsIGNvbG9yID0gImluZGlnbyIpDQoNCmBgYA0KDQoNCiMjIyMgUmljZSAoTWlsbGVkIEVxdWl2YWxlbnQpDQoNCmBgYHtyfQ0KDQpjaGluYTFfciA8LSBjaGluYTEgJT4lDQogIGZpbHRlcihJdGVtID09ICJSaWNlIChNaWxsZWQgRXF1aXZhbGVudCkiKQ0KDQojR2F0aGVyIGRhdGENCg0KY2hpbmExX3IgPC0gY2hpbmExX3IgJT4lDQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBFbGVtZW50LCB2YWx1ZXNfZnJvbSA9IG5fcHJvZHVjdGlvbikNCg0KDQojIEFycmFuZ2UgWWVhciB2YXJpYWJsZQ0KDQpjaGluYTFfciRZZWFyIDwtIHNlcSgxOTYxLDIwMTMpDQoNCmBgYA0KDQpgYGB7cn0NCg0KIyBLYWJsZSBmb3IgdGlkeSB0YWJsZQ0KDQpjaGluYTFfciAlPiUNCiAga2JsKGNhcHRpb24gPSAiIFRhYjIuIENoaW5hJyBOdW1iZXIgb2YgcHJvZHVjdGlvbiBvZiByaWNlIChNaWxsZWQgZXF1aXZhbGVudCkgZnJvbSAxOTYxIHRvIDIwMTMiLCBhbGlnbiA9ICdjJykgJT4lDQogIGthYmxlX21hdGVyaWFsKGMoInN0cmlwZWQiLCAiaG92ZXIiKSkgJT4lDQogIHJvd19zcGVjKDAsIGNvbG9yID0gImluZGlnbyIpDQoNCmBgYA0KDQoNCiMjIERhdGEgQW5hbHlzaXMNCg0KIyMjICBXaGVhdCBhbmQgcHJvZHVjdHMgZm9vZCBwcm9kdWN0aW9uIG92ZXIgdGltZSANCg0KYGBge3J9DQoNCiMgUGxvdCBXaGVhdCBhbmQgcHJvZHVjdHMgZm9vZCBwcm9kdWN0aW9uIG92ZXIgdGltZSANCg0KZ2dwbG90KCBkYXRhID0gY2hpbmExX3cpICsNCiAgZ2VvbV9saW5lKCBtYXBwaW5nID0gYWVzKHggPSBZZWFyLCB5ID0gbl9wcm9kdWN0aW9uKSwgY29sb3IgPSAicmVkIikgKw0KICBsYWJzKHRpdGxlID0iQ2hpbmEnIFdoZWF0IGFuZCBwcm9kdWN0cyBmb29kIHByb2R1Y3Rpb24gb3ZlciB0aW1lIikNCg0KDQpgYGANCg0KV2hlYXQgYW5kIHByb2R1Y3RzIGhhdmUgYmVlbiBpbmNyZWFzaW5nIHNpZ25pZmFudGx5IG92ZXIgdGhlIHRpbWUNCg0KDQojIyMgIFJpY2UgKE1pbGxlZCBlcXVpdmFsZW50KSBmb29kIHByb2R1Y3Rpb24gb3ZlciB0aW1lIA0KDQpgYGB7cn0NCg0KIyBQbG90IFdoZWF0IGFuZCBwcm9kdWN0cyBmb29kIHByb2R1Y3Rpb24gb3ZlciB0aW1lIA0KDQpnZ3Bsb3QoIGRhdGEgPSBjaGluYTFfcikgKw0KICBnZW9tX2xpbmUoIG1hcHBpbmcgPSBhZXMoeCA9IFllYXIsIHkgPSBGb29kKSwgY29sb3IgPSAicmVkIikgKw0KICBsYWJzKHRpdGxlID0iQ2hpbmEnIHJpY2UgKE1pbGxlZCBlcXVpdmFsZW50KSBwcm9kdWN0aW9uIG92ZXIgdGltZSIpDQoNCg0KYGBgDQpSaWNlIChmb29kKSBwcm9kdWN0aW9uIGhhcyBiZWVuIHdhdmVyaW5nIGFuZCBpbmNyZWFzaW5nIG92ZXIgdGltZS4gDQooUmljZSBmZWVkIG5vdCBldmVuIHByb2R1Y2VkIChTZWUgVGFiMikgb3ZlciB0aGUgdGltZSkuIA0KDQoNCiMjIFRha2UgQXdheQ0KDQoNCjxzdHlsZT4NCmRpdi5hcXVhbWFyaW5lIHsgYmFja2dyb3VuZC1jb2xvcjojN2ZmZmQ0OyBib3JkZXItcmFkaXVzOiAxMHB4OyBwYWRkaW5nOiA1cHg7fQ0KPC9zdHlsZT4NCjxkaXYgY2xhc3MgPSAiYXF1YW1hcmluZSI+DQoNCkluIENoaW5hLCB0aGUgd2hlYXQgYW5kIHByb2R1Y3RzIHByb2R1Y3Rpb24gb3ZlciB0aW1lIGhhcyBpbmNyZWFzZWQgYW5kDQpzZWVtcyB0byBkZXZlbG9wIG1vcmUgaW4geWVhcnMgdG8gY29tZS4gSW4gdGhlIG90aGVyIHNpZGUsIHJpY2Ugd2hvIHdhcyBhIGJpZyANCnByb2R1Y3Rpb24gZm9yIENoaW5hIGFyb3VuZCBsYXRlIDYwcyB0byBhcm91bmQgZWFybHkgOTBzIHN0YXJ0ZWQgZGVjcmVhc2luZyANCnRyZW1lbmRvdXNseSBpbiB0aGUgcG9pbnQgd2hlcmUgaXQgcmVhY2hlZCB0aGUgbG93ZXIgcHJvZHVjdGlvbiBpbiB0aGUgcGFzdA0KNTAgeWVhcnMuIFdoaWxlIHJpY2UgKGZvb2QpLCBzdGlsbCBoYXZlIHNvbWUgcHJvZHVjdGlvbiwgdGhlIGZlZWQgZG9lc24ndCBoYXZlIGFueQ0KcHJvZHVjdGlvbiBzaW5jZSAxOTc5IChzZWUgVGFiMikuDQoNCg0KDQo8L2Rpdj4gXGhmaWxsXGJyZWFr