Intro and Overview
This document has a set of exercises for training your R programming
skills using the tidyverse packages to process and analyses example
datasets.
You will need:
- to have been introduced to R and tidyverse
- R and RStudio installed
- the tidyverse package installed
Datasets:
- Exercises will use built-in datasets
- built-in datasets are already loaded in R and ready to use
- you should read help pages of the datasets you analyze
- The titanic dataset is not built-in but it will be accessible by an
URL
Solution to exercises can be revealed by clicking on the
[Code] buttons displayed at the right-hand side of the
exercises.
Preparation
Load the tidyverse package.
Datasets
Built-in dataset:
trees
This data set provides measurements of the diameter, height and
volume of timber in 31 felled black cherry trees. Note that the diameter
(in inches) is erroneously labelled Girth in the data. It is measured at
4 ft 6 in above the ground.
- Show the head of table trees
- Create trees2 variable by copying
trees and
- Renaming column Girth to
Diameter
- Converting Diameter and Height to
centimeters (1 inch = 2,54 cm)
- Converting Volume in cubic meters (1 cibic foot = 0,0283168 cubic
meter)
trees2 <- trees %>%
rename(Diameter=Girth) %>%
mutate(Diameter=Diameter*2.54, Height=Height*2.54) %>%
mutate(Volume=Volume*0.0283168)
- Show the head of table trees2
- Calculate the mean value of each column
trees2 %>%
summarise(
mean.diameter=mean(Diameter),
mean.height=mean(Height),
mean.vol=mean(Volume)
)
- Save in variable trees2.plot a scatter plot of the
diameter vs height
- color points by Volume
- add a title to the plot using ggtitle()
trees2.plot <- trees2 %>%
ggplot(aes(x=Diameter, y=Height, color=Volume)) +
geom_point() +
ggtitle("Scatter Plot")
- save the plot in a PNG image file on your computer
- use ggsave(trees2.plot, filename = ‘your_file.png’,
…) with appropriate parameters for ggsave
- read the help of the function to create a 10x10cm plot named
“trees2.plot.png”
ggsave(trees2.plot, filename = "scatterplot.png", width = 10, height = 10, units = "cm")
Built-in dataset:
PlantGrowth
Results from an experiment to compare yields (as measured by dried
weight of plants) obtained under a control and two different treatment
conditions.
- Show a summary of the table using summary(TABLE)
(not a tidyverse’s function)
weight group
Min. :3.590 ctrl:10
1st Qu.:4.550 trt1:10
Median :5.155 trt2:10
Mean :5.073
3rd Qu.:5.530
Max. :6.310
- Show a density plot of the weight values divided by
group in a single plot
PlantGrowth %>%
ggplot(aes(x=weight, fill=group)) +
geom_density()
![](data:image/png;base64,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)
- Tuning the plots is sometimes as simple as using a special parameter
to a ggplot layer
- replot the same plot with the following setting in
geom_density() to set the transparency:
alpha=0.2
- alpha can take values from 0 to 1, test alpha=0.5
and alpha=0.8
PlantGrowth %>%
ggplot(aes(x=weight, fill=group)) +
geom_density(alpha=0.2)
![](data:image/png;base64,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)
PlantGrowth %>%
ggplot(aes(x=weight, fill=group)) +
geom_density(alpha=0.5)
![](data:image/png;base64,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)
PlantGrowth %>%
ggplot(aes(x=weight, fill=group)) +
geom_density(alpha=0.8)
![](data:image/png;base64,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)
Built-in dataset:
CO2
The CO2 data frame has 84 rows and 5 columns of data from an
experiment on the cold tolerance of the grass species Echinochloa
crus-galli.
- read the documentation of the CO2 dataset to
understand the columns
- show a summary of the table
Plant Type Treatment conc uptake
Qn1 : 7 Quebec :42 nonchilled:42 Min. : 95 Min. : 7.70
Qn2 : 7 Mississippi:42 chilled :42 1st Qu.: 175 1st Qu.:17.90
Qn3 : 7 Median : 350 Median :28.30
Qc1 : 7 Mean : 435 Mean :27.21
Qc3 : 7 3rd Qu.: 675 3rd Qu.:37.12
Qc2 : 7 Max. :1000 Max. :45.50
(Other):42
- Calculate the minimum and maximum uptake per geographical place of
origin
CO2 %>%
group_by(Type) %>%
summarise(
min=min(uptake),
max=max(uptake),
)
- Create a line graph showing uptake by concentration for each
plant
CO2 %>%
ggplot(aes(x=conc, y=uptake, color=Plant)) +
geom_line() +
geom_point()
![](data:image/png;base64,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)
Built-in dataset:
WorldPhones
The number of telephones in various regions of the world (in
thousands).
- show the matrix WorldPhones
N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
1951 45939 21574 2876 1815 1646 89 555
1956 60423 29990 4708 2568 2366 1411 733
1957 64721 32510 5230 2695 2526 1546 773
1958 68484 35218 6662 2845 2691 1663 836
1959 71799 37598 6856 3000 2868 1769 911
1960 76036 40341 8220 3145 3054 1905 1008
1961 79831 43173 9053 3338 3224 2005 1076
- Convert the matrix into a tibble named phones and
show the tibble
- adapt the following template: as_tibble(MATRIX,
rownames=“year”)
- Parameter rownames is needed because by default row
names are not kept by as_tibble()
phones <- as_tibble(WorldPhones, rownames="year")
phones
- Tidy up the tibble in order to make an observation a geographical
area in a year
phones <- phones %>%
gather(N.Amer:Mid.Amer, key="area", value="phones")
phones
- Create a plot to show the number of phones by year in each
geographical area
- use facets and colors for the areas
phones %>%
ggplot(aes(x=year, y=phones, color=area)) +
geom_point() +
facet_wrap(vars(area))
![](data:image/png;base64,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)
Built-in dataset:
mtcars
The data was extracted from the 1974 Motor Trend US magazine, and
comprises fuel consumption and 10 aspects of automobile design and
performance for 32 automobiles (1973–74 models).
- read the related help page to understand the columns
- show the head of the data frame
- To compare engine types (vs), calculate mean gross horsepower and
mean time per 1/4 mile
mtcars %>%
group_by(vs) %>%
summarise(mean.power=mean(hp), mean.time=mean(qsec))
- create a boxplot to compare the weight per engine type (1 plot with
2 boxes)
- Hint: the x axis of a boxplot should not be a numeric column
mtcars %>%
mutate(vs=as.character(vs)) %>%
ggplot(aes(x=vs, y=wt)) +
geom_boxplot()
![](data:image/png;base64,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)
- fastest car per category
- a category is defined by a particular combination of engine (vs) and
transmission (am)
- calculate the fastest car in each category
- the data frame’s rownames must be first transformed as a normal
column using rownames_to_column(“car”)
mtcars %>%
rownames_to_column("car") %>%
group_by(vs, am) %>%
filter(qsec==max(qsec))
- fastest car per category
- reproduce the result above using the slice_max
dplyr’s function
- adapt the following template: slice_max(COLUMN,
n=1)
mtcars %>%
rownames_to_column("car") %>%
group_by(vs, am) %>%
slice_max(qsec)
Titanic dataset
Prepare the
data
- Load the titanic dataset into variable
titanic.source from the following URL:
http://cbdm-01.zdv.uni-mainz.de/~stalbrec/RcourseData/titanic.tsv
titanic.source <- read_tsv("http://cbdm-01.zdv.uni-mainz.de/~stalbrec/RcourseData/titanic.tsv")
- observe the 20 first rows using head() function
(see help page to see how to define number of rows). Would it be
possible after some processing to derive a numerical age value for each
row?
titanic.source %>% head(n=20)
- create variable titanic with a copy of
titanic.source
- filter the table to keep rows that contains a possible value for
age
- tidy up the table in order to have a numerical column for
Age
- remove any temporary column created during this task, if
relevant
- show the head of the new table
titanic <- titanic.source %>%
filter(Age!="Not Available") %>%
separate(Age, into = c("Age", "rest"), sep=", ") %>%
mutate(Age=as.numeric(Age)) %>%
select(-rest)
titanic %>% head()
Survival
status
- Display a bar plot with numbers of survived and died passengers in
each class
- use titanic table
- use aes() with parameter x and
fill
- Tuning plots can get complicated: add the following ggplot layer
after geom_bar() to show numbers in bars:
stat_count(geom = "text", colour = "white", aes(label = ..count..), position=position_stack(vjust=0.5))
titanic %>%
ggplot(aes(x=Class, fill=SurvivalStatus)) +
geom_bar() +
stat_count(geom = "text", colour = "white", aes(label = ..count..), position=position_stack(vjust=0.5))
![](data:image/png;base64,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)
- In a new table titanic.stats, calculate numbers of
survived and died passengers in each class
- use titanic table
- hint: use summarise(n=n()) where function
n() counts number of rows
titanic.stats <- titanic %>%
group_by(Class, SurvivalStatus) %>%
summarise(n=n())
`summarise()` has grouped output by 'Class'. You can override using the `.groups` argument.
- tidy the titanic.stats table to make a class an
observation, resulting in a new table with 3 columns (Class, died,
survived)
titanic.stats <- titanic.stats %>%
spread(SurvivalStatus, n)
titanic.stats
- Using the titanic.stats table, calculate the
frequency for male or female passengers to die in each class
titanic.stats %>%
mutate(freq=died/(died+survived))
Distribution of
age
- Calculate the mean age in each class for male and female passengers
using summarise()
- use titanic table
- Note that the setting na.rm=TRUE for the
mean() function prevents the calculation to fail in
cases of missing values. As we filtered out missing values earlier it
should not be necessary. Also applies to sum, min and
max functions.
titanic %>%
group_by(Class, Sex) %>%
summarise(avg=mean(Age, na.rm=TRUE))
`summarise()` has grouped output by 'Class'. You can override using the `.groups` argument.
- plot the distribution of age in each class for male and female
passengers using boxplots
- use parameters x, y and
fill in aes()
titanic %>%
ggplot(aes(y=Age, x=Sex, fill=Class)) +
geom_boxplot()
![](data:image/png;base64,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Su1GeesenxLe8gaCl07uuNdH18H20RO0VS3e+elRcb2/wuuK+ftXn+kTTy5nXtkb2JkG3tnxUflt22vwgjcuBbzTlyMn2M41b/T24BW9gZ11j3dht7p0MHJvQ/T24BW9gZ11j/dy6BoZup83envwit7AzrrHe29ixwde8DYOvOBt6wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkMXvOBt7wZ2JkO3b3iDi9w5n8DbuF7hldw+OvUDAG9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgzR6vXF28e6nk9tGpH4D6BBrHmbel7aNTP4Dsz7xix6e+duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBW9w2msHXvAGp7124AVvcNprB17wBqe9duAFb3Daawde8AanvXbgBa9a6msfW/IHsDsZuuBtbfvokj+A3cnQBW9r20enfQB7e2IjkKEL3ta2j075APb25PTK0M0Ib+yuqeONDbz3NDse7l+B13yRA8gS7/x0VFy+AK/5wHu32duLYvrqArzWA+/dpq+vitmbs/JX7uikdoO020tweR/Ee72/wusS+qvZQoZ3rZui/+nJ8K6y9ZkXvKYzPAA1vH255k0+wwNQwzs/PerFvQ3JZ3gAanj7cj9v8hkegB7erbTHsDvDu9ZNhgcgQxe8+WR4ADJ0wZtPhgcgQxe8+WR4ADJ0wZtPhgcgQxe8+WR4ADJ0wZtPhgcgQxe8+WR4ADJ0wZtPhgcgQxe8+WR4ADJ0wZtPhgcgQ7cxXrul9oPUrdfDAYA3l3o4APDmUg8HkA1e6l/gpWQDLyUbeCnZwEvJlibe+enwaNefrZ/q3L96duxp4q1bpJ4t4FY9O/Yk8c6Oh9+elf/z/KKY//y34fDoeujOxNOXw+GoWsDFn+Ven4+9Kkm81SJ9qF5PYn76oly4F+533Ov6lB/Wf5Z7fT72qmTxuuWavb2Y/3xWuP8uX5Gq/J31n2nvpXR9PvaqdPEeD4flxcPWAn4Ylv9irv9Mey+l6/OxV6WLd3F22VjA2fFo+U9nT848fT72qmTxumu76/2rjQV0vzn94Wz9Z9p7KV2fj70qXbzVXQ5b/3ReDoe/+3G0/rPc6/OxV6WJl6gALyUceCnZwEvJBl5KNvBSsoGXkg28UY0Hg8GjE+296GvgjWn8+H1RTAaH2vvR08Ab0ad3FdvzJx+196SfgTeiT++erX85GJSn4XF5DXF78KxuI2ot8MY0GQwWUD+9+6q8iCjPwOdfuf9QJ4E3LvcdW4l14i5+bw8Oi5uvf/rmvfZO9SXwRnd78OSjMzyoTsNjvn3rLPDGd/P1yfjz92znA64augq8EZVqlx8mqzt7J4//ecCpt6PAG9O5M+u+Wfv0rjz1loLdZW91/UsdBN6oxssr3equslKyu8u3uueBOgi8lGzgpWQDLyUbeCnZwEvJBl5KNvBSsoGXkg28lGzgpWT7P3kAZBD36/jxAAAAAElFTkSuQmCC)
- Create subplots of the previous plot by survival status
titanic %>%
ggplot(aes(y=Age, x=Sex, fill=Class)) +
geom_boxplot() +
facet_wrap(vars(SurvivalStatus))
![](data:image/png;base64,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)
LS0tDQp0aXRsZTogIkRhdGEgYW5hbHlzaXMgd2l0aCBSIGFuZCB0aGUgdGlkeXZlcnNlIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0aGVtZTogcmVhZGFibGUNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiAyDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQotLS0NCg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KIyBJbnRybyBhbmQgT3ZlcnZpZXcNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KVGhpcyBkb2N1bWVudCBoYXMgYSBzZXQgb2YgZXhlcmNpc2VzIGZvciB0cmFpbmluZyB5b3VyIFIgcHJvZ3JhbW1pbmcgc2tpbGxzIA0KdXNpbmcgdGhlIHRpZHl2ZXJzZSBwYWNrYWdlcyB0byBwcm9jZXNzIGFuZCBhbmFseXNlcyBleGFtcGxlIGRhdGFzZXRzLg0KDQpZb3Ugd2lsbCBuZWVkOg0KDQoqIHRvIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIFIgYW5kIHRpZHl2ZXJzZQ0KKiBSIGFuZCBSU3R1ZGlvIGluc3RhbGxlZA0KKiB0aGUgdGlkeXZlcnNlIHBhY2thZ2UgaW5zdGFsbGVkDQoNCkRhdGFzZXRzOg0KDQoqIEV4ZXJjaXNlcyB3aWxsIHVzZSBidWlsdC1pbiBkYXRhc2V0cw0KKiBidWlsdC1pbiBkYXRhc2V0cyBhcmUgYWxyZWFkeSBsb2FkZWQgaW4gUiBhbmQgcmVhZHkgdG8gdXNlDQoqIHlvdSBzaG91bGQgcmVhZCBoZWxwIHBhZ2VzIG9mIHRoZSBkYXRhc2V0cyB5b3UgYW5hbHl6ZSANCiogVGhlIHRpdGFuaWMgZGF0YXNldCBpcyBub3QgYnVpbHQtaW4gYnV0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSBieSBhbiBVUkwNCg0KU29sdXRpb24gdG8gZXhlcmNpc2VzIGNhbiBiZSByZXZlYWxlZCBieSBjbGlja2luZyBvbiB0aGUgKipbQ29kZV0qKiBidXR0b25zIGRpc3BsYXllZCANCmF0IHRoZSByaWdodC1oYW5kIHNpZGUgb2YgdGhlIGV4ZXJjaXNlcy4gDQoNCg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KIyBQcmVwYXJhdGlvbg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KDQpMb2FkIHRoZSB0aWR5dmVyc2UgcGFja2FnZS4NCg0KYGBge3IgY2xhc3Muc291cmNlID0gJ2ZvbGQtc2hvdyd9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmBgYA0KDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQojIGRhdGEoKQ0Kcm9jaw0Kc3RhdGUueDc3DQphaXJxdWFsaXR5DQpPcmFuZ2UNCg0KDQojIHRyYWluLmRhdGEgPC0gcmVhZF90c3YoImh0dHBzOi8vd3d3LndvbGZyYW1jbG91ZC5jb20vb2JqZWN0cy84YmJlOTc1Yy00OGE5LTRkMzYtYTM1OC0xZGRlN2M1YzU3MmEiKQ0KIyB0cmFpbi5kYXRhICU+JSBtdXRhdGUoQWdlID0gc3RyX3JlcGxhY2UoQWdlLCAiUXVhbnRpdHlcXFsiLCAiIikpICU+JSANCiMgICBtdXRhdGUoQWdlID0gc3RyX3JlcGxhY2UoQWdlLCAiTWlzc2luZ1xcWyIsICIiKSkgJT4lICANCiMgICBtdXRhdGUoQWdlID0gc3RyX3JlcGxhY2UoQWdlLCAiXFxdIiwgIiIpKSAlPiUgDQojICAgbXV0YXRlKEFnZSA9IHN0cl9yZXBsYWNlX2FsbChBZ2UsICciJywgIiIpKSAlPiUgDQojICAgbXV0YXRlKEFnZSA9IHN0cl9yZXBsYWNlKEFnZSwgIlxcLiwiLCAiLjAsIikpICAlPiUgDQojICAgd3JpdGVfdHN2KCJ0aXRhbmljLnRzdiIpDQojIHRpdGFuaWMgJT4lIGhlYWQobj0yMCkNCmBgYA0KDQoNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCiMgRGF0YXNldHMNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KIyMgQnVpbHQtaW4gZGF0YXNldDogdHJlZXMNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KVGhpcyBkYXRhIHNldCBwcm92aWRlcyBtZWFzdXJlbWVudHMgb2YgdGhlIGRpYW1ldGVyLCBoZWlnaHQgYW5kIHZvbHVtZSBvZiB0aW1iZXIgaW4gMzEgZmVsbGVkIGJsYWNrIGNoZXJyeSB0cmVlcy4gTm90ZSB0aGF0IHRoZSBkaWFtZXRlciAoaW4gaW5jaGVzKSBpcyBlcnJvbmVvdXNseSBsYWJlbGxlZCBHaXJ0aCBpbiB0aGUgZGF0YS4gSXQgaXMgbWVhc3VyZWQgYXQgNCBmdCA2IGluIGFib3ZlIHRoZSBncm91bmQuDQoNCiogU2hvdyB0aGUgaGVhZCBvZiB0YWJsZSAqKnRyZWVzKiogDQpgYGB7cn0NCnRyZWVzICU+JSBoZWFkKCkNCmBgYA0KDQoqIENyZWF0ZSAqKnRyZWVzMioqIHZhcmlhYmxlIGJ5IGNvcHlpbmcgKip0cmVlcyoqIGFuZA0KICAgICogUmVuYW1pbmcgY29sdW1uICoqR2lydGgqKiB0byAqKkRpYW1ldGVyKioNCiAgICAqIENvbnZlcnRpbmcgKipEaWFtZXRlcioqIGFuZCAqKkhlaWdodCoqIHRvIGNlbnRpbWV0ZXJzICgxIGluY2ggPSAyLDU0IGNtKQ0KICAgICogQ29udmVydGluZyBWb2x1bWUgaW4gY3ViaWMgbWV0ZXJzICgxIGNpYmljIGZvb3QgPSAwLDAyODMxNjggY3ViaWMgbWV0ZXIpDQpgYGB7cn0NCnRyZWVzMiA8LSB0cmVlcyAlPiUgDQogIHJlbmFtZShEaWFtZXRlcj1HaXJ0aCkgJT4lIA0KICBtdXRhdGUoRGlhbWV0ZXI9RGlhbWV0ZXIqMi41NCwgSGVpZ2h0PUhlaWdodCoyLjU0KSAlPiUgDQogIG11dGF0ZShWb2x1bWU9Vm9sdW1lKjAuMDI4MzE2OCkNCmBgYA0KDQoqIFNob3cgdGhlIGhlYWQgb2YgdGFibGUgKip0cmVlczIqKiANCmBgYHtyfQ0KdHJlZXMyICU+JSBoZWFkKCkNCmBgYA0KDQoqIENhbGN1bGF0ZSB0aGUgbWVhbiB2YWx1ZSBvZiBlYWNoIGNvbHVtbiANCmBgYHtyfQ0KdHJlZXMyICU+JSANCiAgc3VtbWFyaXNlKA0KICAgIG1lYW4uZGlhbWV0ZXI9bWVhbihEaWFtZXRlciksDQogICAgbWVhbi5oZWlnaHQ9bWVhbihIZWlnaHQpLA0KICAgIG1lYW4udm9sPW1lYW4oVm9sdW1lKQ0KICAgICkNCmBgYA0KDQoqIFNhdmUgaW4gdmFyaWFibGUgKip0cmVlczIucGxvdCoqIGEgc2NhdHRlciBwbG90IG9mIHRoZSBkaWFtZXRlciB2cyBoZWlnaHQgDQogICAgKiBjb2xvciBwb2ludHMgYnkgKipWb2x1bWUqKg0KICAgICogYWRkIGEgdGl0bGUgdG8gdGhlIHBsb3QgdXNpbmcgKipnZ3RpdGxlKCkqKiAgIA0KYGBge3J9DQp0cmVlczIucGxvdCA8LSB0cmVlczIgJT4lIA0KICBnZ3Bsb3QoYWVzKHg9RGlhbWV0ZXIsIHk9SGVpZ2h0LCBjb2xvcj1Wb2x1bWUpKSArDQogIGdlb21fcG9pbnQoKSArIA0KICBnZ3RpdGxlKCJTY2F0dGVyIFBsb3QiKQ0KYGBgDQoNCg0KKiBzYXZlIHRoZSBwbG90IGluIGEgUE5HIGltYWdlIGZpbGUgb24geW91ciBjb21wdXRlcg0KICAgICogdXNlICoqZ2dzYXZlKHRyZWVzMi5wbG90LCBmaWxlbmFtZSA9ICd5b3VyX2ZpbGUucG5nJywgLi4uKSoqIHdpdGggYXBwcm9wcmlhdGUgcGFyYW1ldGVycyBmb3IgKipnZ3NhdmUqKg0KICAgICogcmVhZCB0aGUgaGVscCBvZiB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgMTB4MTBjbSBwbG90IG5hbWVkICoqInRyZWVzMi5wbG90LnBuZyIqKg0KYGBge3J9DQpnZ3NhdmUodHJlZXMyLnBsb3QsIGZpbGVuYW1lID0gInNjYXR0ZXJwbG90LnBuZyIsIHdpZHRoID0gMTAsIGhlaWdodCA9IDEwLCB1bml0cyA9ICJjbSIpDQpgYGANCg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KIyMgQnVpbHQtaW4gZGF0YXNldDogUGxhbnRHcm93dGgNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KUmVzdWx0cyBmcm9tIGFuIGV4cGVyaW1lbnQgdG8gY29tcGFyZSB5aWVsZHMgKGFzIG1lYXN1cmVkIGJ5IGRyaWVkIHdlaWdodCBvZiANCnBsYW50cykgb2J0YWluZWQgdW5kZXIgYSBjb250cm9sIGFuZCB0d28gZGlmZmVyZW50IHRyZWF0bWVudCBjb25kaXRpb25zLg0KDQoqIFNob3cgYSBzdW1tYXJ5IG9mIHRoZSB0YWJsZSB1c2luZyAqKnN1bW1hcnkoVEFCTEUpKiogKG5vdCBhIHRpZHl2ZXJzZSdzIGZ1bmN0aW9uKQ0KYGBge3J9DQpzdW1tYXJ5KFBsYW50R3Jvd3RoKQ0KYGBgDQoNCiogU2hvdyBhIGRlbnNpdHkgcGxvdCBvZiB0aGUgKip3ZWlnaHQqKiB2YWx1ZXMgZGl2aWRlZCBieSAqKmdyb3VwKiogaW4gYSBzaW5nbGUgcGxvdA0KYGBge3J9DQpQbGFudEdyb3d0aCAlPiUgDQogIGdncGxvdChhZXMoeD13ZWlnaHQsIGZpbGw9Z3JvdXApKSArDQogIGdlb21fZGVuc2l0eSgpDQpgYGANCiogVHVuaW5nIHRoZSBwbG90cyBpcyBzb21ldGltZXMgYXMgc2ltcGxlIGFzIHVzaW5nIGEgc3BlY2lhbCBwYXJhbWV0ZXIgdG8gYSBnZ3Bsb3QgbGF5ZXINCiAgICAqIHJlcGxvdCB0aGUgc2FtZSBwbG90IHdpdGggdGhlIGZvbGxvd2luZyBzZXR0aW5nIGluICoqZ2VvbV9kZW5zaXR5KCkqKiB0byBzZXQgdGhlIHRyYW5zcGFyZW5jeTogKiphbHBoYT0wLjIqKg0KICAgICogYWxwaGEgY2FuIHRha2UgdmFsdWVzIGZyb20gMCB0byAxLCB0ZXN0ICoqYWxwaGE9MC41KiogYW5kICoqYWxwaGE9MC44KioNCmBgYHtyfQ0KUGxhbnRHcm93dGggJT4lIA0KICBnZ3Bsb3QoYWVzKHg9d2VpZ2h0LCBmaWxsPWdyb3VwKSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGE9MC4yKQ0KUGxhbnRHcm93dGggJT4lIA0KICBnZ3Bsb3QoYWVzKHg9d2VpZ2h0LCBmaWxsPWdyb3VwKSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGE9MC41KQ0KUGxhbnRHcm93dGggJT4lIA0KICBnZ3Bsb3QoYWVzKHg9d2VpZ2h0LCBmaWxsPWdyb3VwKSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGE9MC44KQ0KYGBgDQoNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCiMjIEJ1aWx0LWluIGRhdGFzZXQ6IENPMg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KDQpUaGUgQ08yIGRhdGEgZnJhbWUgaGFzIDg0IHJvd3MgYW5kIDUgY29sdW1ucyBvZiBkYXRhIGZyb20gYW4gZXhwZXJpbWVudCBvbiB0aGUgY29sZCB0b2xlcmFuY2Ugb2YgdGhlIGdyYXNzIHNwZWNpZXMgRWNoaW5vY2hsb2EgY3J1cy1nYWxsaS4NCg0KKiByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAqKkNPMioqIGRhdGFzZXQgdG8gdW5kZXJzdGFuZCB0aGUgY29sdW1ucw0KKiBzaG93IGEgc3VtbWFyeSBvZiB0aGUgdGFibGUNCmBgYHtyfQ0Kc3VtbWFyeShDTzIpDQpgYGANCg0KKiBDYWxjdWxhdGUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdXB0YWtlIHBlciBnZW9ncmFwaGljYWwgcGxhY2Ugb2Ygb3JpZ2luDQpgYGB7cn0NCkNPMiAlPiUgDQogIGdyb3VwX2J5KFR5cGUpICU+JSANCiAgc3VtbWFyaXNlKA0KICAgIG1pbj1taW4odXB0YWtlKSwNCiAgICBtYXg9bWF4KHVwdGFrZSksDQogICkNCmBgYA0KDQoqIENyZWF0ZSBhIGxpbmUgZ3JhcGggc2hvd2luZyB1cHRha2UgYnkgY29uY2VudHJhdGlvbiBmb3IgZWFjaCBwbGFudA0KYGBge3J9DQpDTzIgJT4lIA0KICBnZ3Bsb3QoYWVzKHg9Y29uYywgeT11cHRha2UsIGNvbG9yPVBsYW50KSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKQ0KYGBgDQoNCg0KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPg0KIyMgQnVpbHQtaW4gZGF0YXNldDogV29ybGRQaG9uZXMNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KVGhlIG51bWJlciBvZiB0ZWxlcGhvbmVzIGluIHZhcmlvdXMgcmVnaW9ucyBvZiB0aGUgd29ybGQgKGluIHRob3VzYW5kcykuDQoNCiogc2hvdyB0aGUgbWF0cml4ICoqV29ybGRQaG9uZXMqKg0KYGBge3J9DQpXb3JsZFBob25lcw0KYGBgDQoNCiogQ29udmVydCB0aGUgbWF0cml4IGludG8gYSB0aWJibGUgbmFtZWQgKipwaG9uZXMqKiBhbmQgc2hvdyB0aGUgdGliYmxlDQogICAgKiBhZGFwdCB0aGUgZm9sbG93aW5nIHRlbXBsYXRlOiAqKmFzX3RpYmJsZShNQVRSSVgsIHJvd25hbWVzPSJ5ZWFyIikqKg0KICAgICogUGFyYW1ldGVyICoqcm93bmFtZXMqKiBpcyBuZWVkZWQgYmVjYXVzZSBieSBkZWZhdWx0IHJvdyBuYW1lcyBhcmUgbm90IGtlcHQgYnkgKiphc190aWJibGUoKSoqDQoNCmBgYHtyfQ0KcGhvbmVzIDwtIGFzX3RpYmJsZShXb3JsZFBob25lcywgcm93bmFtZXM9InllYXIiKQ0KcGhvbmVzDQpgYGANCg0KKiBUaWR5IHVwIHRoZSB0aWJibGUgaW4gb3JkZXIgdG8gbWFrZSBhbiBvYnNlcnZhdGlvbiBhIGdlb2dyYXBoaWNhbCBhcmVhIGluIGEgeWVhciANCmBgYHtyfQ0KcGhvbmVzIDwtIHBob25lcyAlPiUgDQogIGdhdGhlcihOLkFtZXI6TWlkLkFtZXIsIGtleT0iYXJlYSIsIHZhbHVlPSJwaG9uZXMiKQ0KcGhvbmVzDQpgYGANCg0KKiBDcmVhdGUgYSBwbG90IHRvIHNob3cgdGhlIG51bWJlciBvZiBwaG9uZXMgYnkgeWVhciBpbiBlYWNoIGdlb2dyYXBoaWNhbCBhcmVhDQogICAgKiB1c2UgZmFjZXRzIGFuZCBjb2xvcnMgZm9yIHRoZSBhcmVhcyANCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02fQ0KcGhvbmVzICU+JSANCiAgZ2dwbG90KGFlcyh4PXllYXIsIHk9cGhvbmVzLCBjb2xvcj1hcmVhKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBmYWNldF93cmFwKHZhcnMoYXJlYSkpDQpgYGANCg0KDQo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+DQojIyBCdWlsdC1pbiBkYXRhc2V0OiBtdGNhcnMNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KVGhlIGRhdGEgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSAxOTc0IE1vdG9yIFRyZW5kIFVTIG1hZ2F6aW5lLCBhbmQgY29tcHJpc2VzIGZ1ZWwgY29uc3VtcHRpb24gYW5kIDEwIGFzcGVjdHMgb2YgYXV0b21vYmlsZSBkZXNpZ24gYW5kIHBlcmZvcm1hbmNlIGZvciAzMiBhdXRvbW9iaWxlcyAoMTk3M+KAkzc0IG1vZGVscykuDQoNCiogcmVhZCB0aGUgcmVsYXRlZCBoZWxwIHBhZ2UgdG8gdW5kZXJzdGFuZCB0aGUgY29sdW1ucw0KKiBzaG93IHRoZSBoZWFkIG9mIHRoZSBkYXRhIGZyYW1lDQpgYGB7cn0NCm10Y2FycyAlPiUgaGVhZCgpDQpgYGANCg0KKiBUbyBjb21wYXJlIGVuZ2luZSB0eXBlcyAodnMpLCBjYWxjdWxhdGUgbWVhbiBncm9zcyBob3JzZXBvd2VyIGFuZCBtZWFuIHRpbWUgcGVyIDEvNCBtaWxlDQpgYGB7cn0NCm10Y2FycyAlPiUNCiAgZ3JvdXBfYnkodnMpICU+JSANCiAgc3VtbWFyaXNlKG1lYW4ucG93ZXI9bWVhbihocCksIG1lYW4udGltZT1tZWFuKHFzZWMpKQ0KYGBgDQoNCg0KKiBjcmVhdGUgYSBib3hwbG90IHRvIGNvbXBhcmUgdGhlIHdlaWdodCBwZXIgZW5naW5lIHR5cGUgKDEgcGxvdCB3aXRoIDIgYm94ZXMpDQogICAgKiBIaW50OiB0aGUgeCBheGlzIG9mIGEgYm94cGxvdCBzaG91bGQgbm90IGJlIGEgbnVtZXJpYyBjb2x1bW4NCg0KYGBge3J9DQptdGNhcnMgJT4lIA0KICBtdXRhdGUodnM9YXMuY2hhcmFjdGVyKHZzKSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHg9dnMsIHk9d3QpKSArDQogIGdlb21fYm94cGxvdCgpDQpgYGANCiogZmFzdGVzdCBjYXIgcGVyIGNhdGVnb3J5DQogICAgKiBhIGNhdGVnb3J5IGlzIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyIGNvbWJpbmF0aW9uIG9mIGVuZ2luZSAodnMpIGFuZCB0cmFuc21pc3Npb24gKGFtKQ0KICAgICogY2FsY3VsYXRlIHRoZSBmYXN0ZXN0IGNhciBpbiBlYWNoIGNhdGVnb3J5IA0KICAgICAgICAqIHRoZSBkYXRhIGZyYW1lJ3Mgcm93bmFtZXMgbXVzdCBiZSBmaXJzdCB0cmFuc2Zvcm1lZCBhcyBhIG5vcm1hbCBjb2x1bW4gdXNpbmcgKipyb3duYW1lc190b19jb2x1bW4oImNhciIpKioNCiAgICAgICAgDQpgYGB7cn0NCm10Y2FycyAlPiUgDQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FyIikgJT4lIA0KICBncm91cF9ieSh2cywgYW0pICU+JSANCiAgZmlsdGVyKHFzZWM9PW1heChxc2VjKSkNCmBgYA0KKiBmYXN0ZXN0IGNhciBwZXIgY2F0ZWdvcnkNCiAgICAqIHJlcHJvZHVjZSB0aGUgcmVzdWx0IGFib3ZlIHVzaW5nIHRoZSAqKnNsaWNlX21heCoqIGRwbHlyJ3MgZnVuY3Rpb24NCiAgICAgICAgKiBhZGFwdCB0aGUgZm9sbG93aW5nIHRlbXBsYXRlOiAqKnNsaWNlX21heChDT0xVTU4sIG49MSkqKg0KYGBge3J9DQptdGNhcnMgJT4lIA0KICByb3duYW1lc190b19jb2x1bW4oImNhciIpICU+JSANCiAgZ3JvdXBfYnkodnMsIGFtKSAlPiUgDQogIHNsaWNlX21heChxc2VjKQ0KYGBgDQoNCg0KDQo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+DQojIyBUaXRhbmljIGRhdGFzZXQNCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4NCg0KIyMjIFByZXBhcmUgdGhlIGRhdGENCg0KKiBMb2FkIHRoZSB0aXRhbmljIGRhdGFzZXQgaW50byB2YXJpYWJsZSAqKnRpdGFuaWMuc291cmNlKiogZnJvbSB0aGUgZm9sbG93aW5nIFVSTDogIGBodHRwOi8vY2JkbS0wMS56ZHYudW5pLW1haW56LmRlL35zdGFsYnJlYy9SY291cnNlRGF0YS90aXRhbmljLnRzdmANCmBgYHtyIG1lc3NhZ2U9RkFMU0V9DQp0aXRhbmljLnNvdXJjZSA8LSByZWFkX3RzdigiaHR0cDovL2NiZG0tMDEuemR2LnVuaS1tYWluei5kZS9+c3RhbGJyZWMvUmNvdXJzZURhdGEvdGl0YW5pYy50c3YiKSAgDQpgYGANCg0KKiBvYnNlcnZlIHRoZSAyMCBmaXJzdCByb3dzIHVzaW5nICoqaGVhZCgpKiogZnVuY3Rpb24gKHNlZSBoZWxwIHBhZ2UgdG8gc2VlIGhvdyANCnRvIGRlZmluZSBudW1iZXIgb2Ygcm93cykuIFdvdWxkIGl0IGJlIHBvc3NpYmxlIGFmdGVyIHNvbWUgcHJvY2Vzc2luZyB0byBkZXJpdmUgDQphIG51bWVyaWNhbCBhZ2UgdmFsdWUgZm9yIGVhY2ggcm93Pw0KYGBge3J9DQp0aXRhbmljLnNvdXJjZSAlPiUgaGVhZChuPTIwKQ0KYGBgDQoNCiogY3JlYXRlIHZhcmlhYmxlICoqdGl0YW5pYyoqIHdpdGggYSBjb3B5IG9mICoqdGl0YW5pYy5zb3VyY2UqKg0KICAgICogZmlsdGVyIHRoZSB0YWJsZSB0byBrZWVwIHJvd3MgdGhhdCBjb250YWlucyBhIHBvc3NpYmxlIHZhbHVlIGZvciBhZ2UNCiAgICAqIHRpZHkgdXAgdGhlIHRhYmxlIGluIG9yZGVyIHRvIGhhdmUgYSBudW1lcmljYWwgY29sdW1uIGZvciAqKkFnZSoqDQogICAgKiByZW1vdmUgYW55IHRlbXBvcmFyeSBjb2x1bW4gY3JlYXRlZCBkdXJpbmcgdGhpcyB0YXNrLCBpZiByZWxldmFudA0KKiBzaG93IHRoZSBoZWFkIG9mIHRoZSBuZXcgdGFibGUNCg0KYGBge3J9DQp0aXRhbmljIDwtIHRpdGFuaWMuc291cmNlICU+JSANCiAgZmlsdGVyKEFnZSE9Ik5vdCBBdmFpbGFibGUiKSAlPiUgDQogIHNlcGFyYXRlKEFnZSwgaW50byA9IGMoIkFnZSIsICJyZXN0IiksIHNlcD0iLCAiKSAlPiUgDQogIG11dGF0ZShBZ2U9YXMubnVtZXJpYyhBZ2UpKSAlPiUgDQogIHNlbGVjdCgtcmVzdCkgDQp0aXRhbmljICU+JSBoZWFkKCkNCmBgYA0KDQoNCiMjIyBTdXJ2aXZhbCBzdGF0dXMNCg0KKiBEaXNwbGF5IGEgYmFyIHBsb3Qgd2l0aCBudW1iZXJzIG9mIHN1cnZpdmVkIGFuZCBkaWVkIHBhc3NlbmdlcnMgaW4gZWFjaCBjbGFzcw0KICAgICogdXNlICoqdGl0YW5pYyoqIHRhYmxlDQogICAgKiB1c2UgKiphZXMoKSoqIHdpdGggcGFyYW1ldGVyICoqeCoqIGFuZCAqKmZpbGwqKg0KKiBUdW5pbmcgcGxvdHMgY2FuIGdldCBjb21wbGljYXRlZDogYWRkIHRoZSBmb2xsb3dpbmcgZ2dwbG90IGxheWVyIGFmdGVyICoqZ2VvbV9iYXIoKSoqIHRvIHNob3cgbnVtYmVycyBpbiBiYXJzOg0KICAgICogYHN0YXRfY291bnQoZ2VvbSA9ICJ0ZXh0IiwgY29sb3VyID0gIndoaXRlIiwgYWVzKGxhYmVsID0gLi5jb3VudC4uKSwgcG9zaXRpb249cG9zaXRpb25fc3RhY2sodmp1c3Q9MC41KSlgDQoNCmBgYHtyfQ0KdGl0YW5pYyAlPiUgDQogIGdncGxvdChhZXMoeD1DbGFzcywgZmlsbD1TdXJ2aXZhbFN0YXR1cykpICsNCiAgZ2VvbV9iYXIoKSArDQogIHN0YXRfY291bnQoZ2VvbSA9ICJ0ZXh0IiwgY29sb3VyID0gIndoaXRlIiwgYWVzKGxhYmVsID0gLi5jb3VudC4uKSwgcG9zaXRpb249cG9zaXRpb25fc3RhY2sodmp1c3Q9MC41KSkNCmBgYA0KDQoqIEluIGEgbmV3IHRhYmxlICoqdGl0YW5pYy5zdGF0cyoqLCBjYWxjdWxhdGUgbnVtYmVycyBvZiBzdXJ2aXZlZCBhbmQgZGllZCBwYXNzZW5nZXJzIGluIGVhY2ggY2xhc3MgDQogICAgKiB1c2UgKip0aXRhbmljKiogdGFibGUNCiAgICAqIGhpbnQ6IHVzZSAqKnN1bW1hcmlzZShuPW4oKSkqKiB3aGVyZSBmdW5jdGlvbiAqKm4oKSoqIGNvdW50cyBudW1iZXIgb2Ygcm93cw0KDQpgYGB7cn0NCnRpdGFuaWMuc3RhdHMgPC0gdGl0YW5pYyAlPiUNCiAgZ3JvdXBfYnkoQ2xhc3MsIFN1cnZpdmFsU3RhdHVzKSAlPiUgDQogIHN1bW1hcmlzZShuPW4oKSkNCnRpdGFuaWMuc3RhdHMNCmBgYA0KDQoqIHRpZHkgdGhlICoqdGl0YW5pYy5zdGF0cyoqIHRhYmxlIHRvIG1ha2UgYSBjbGFzcyBhbiBvYnNlcnZhdGlvbiwgcmVzdWx0aW5nIGluIGEgbmV3IHRhYmxlIHdpdGggMyBjb2x1bW5zIChDbGFzcywgZGllZCwgc3Vydml2ZWQpDQpgYGB7cn0NCnRpdGFuaWMuc3RhdHMgPC0gdGl0YW5pYy5zdGF0cyAlPiUgDQogIHNwcmVhZChTdXJ2aXZhbFN0YXR1cywgbikNCnRpdGFuaWMuc3RhdHMNCmBgYA0KDQoqIFVzaW5nIHRoZSAqKnRpdGFuaWMuc3RhdHMqKiB0YWJsZSwgY2FsY3VsYXRlIHRoZSBmcmVxdWVuY3kgZm9yIG1hbGUgb3IgZmVtYWxlIHBhc3NlbmdlcnMgdG8gZGllIGluIGVhY2ggY2xhc3MNCg0KYGBge3J9DQp0aXRhbmljLnN0YXRzICU+JSANCiAgbXV0YXRlKGZyZXE9ZGllZC8oZGllZCtzdXJ2aXZlZCkpDQpgYGANCg0KDQojIyMgRGlzdHJpYnV0aW9uIG9mIGFnZQ0KDQoqIENhbGN1bGF0ZSB0aGUgbWVhbiBhZ2UgaW4gZWFjaCBjbGFzcyBmb3IgbWFsZSBhbmQgZmVtYWxlIHBhc3NlbmdlcnMgdXNpbmcgKipzdW1tYXJpc2UoKSoqDQogICAgKiB1c2UgdGl0YW5pYyB0YWJsZQ0KICAgICogTm90ZSB0aGF0IHRoZSBzZXR0aW5nICoqbmEucm09VFJVRSoqIGZvciB0aGUgKiptZWFuKCkqKiBmdW5jdGlvbiBwcmV2ZW50cyB0aGUgY2FsY3VsYXRpb24gdG8gZmFpbCBpbiBjYXNlcyBvZiBtaXNzaW5nIHZhbHVlcy4gQXMgd2UgZmlsdGVyZWQgb3V0IG1pc3NpbmcgdmFsdWVzIGVhcmxpZXIgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuIEFsc28gYXBwbGllcyB0byAqKnN1bSwgbWluIGFuZCBtYXgqKiBmdW5jdGlvbnMuICANCmBgYHtyfQ0KdGl0YW5pYyAlPiUgDQogIGdyb3VwX2J5KENsYXNzLCBTZXgpICU+JSANCiAgc3VtbWFyaXNlKGF2Zz1tZWFuKEFnZSwgbmEucm09VFJVRSkpDQpgYGANCg0KKiBwbG90IHRoZSBkaXN0cmlidXRpb24gb2YgYWdlIGluIGVhY2ggY2xhc3MgZm9yIG1hbGUgYW5kIGZlbWFsZSBwYXNzZW5nZXJzIHVzaW5nIGJveHBsb3RzDQogICAgKiB1c2UgcGFyYW1ldGVycyAqKngqKiwgKip5KiogYW5kICoqZmlsbCoqIGluICoqYWVzKCkqKg0KYGBge3J9DQp0aXRhbmljICU+JSANCiAgZ2dwbG90KGFlcyh5PUFnZSwgeD1TZXgsIGZpbGw9Q2xhc3MpKSArDQogIGdlb21fYm94cGxvdCgpDQpgYGANCiogQ3JlYXRlIHN1YnBsb3RzIG9mIHRoZSBwcmV2aW91cyBwbG90IGJ5IHN1cnZpdmFsIHN0YXR1cw0KYGBge3J9DQp0aXRhbmljICU+JSANCiAgZ2dwbG90KGFlcyh5PUFnZSwgeD1TZXgsIGZpbGw9Q2xhc3MpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgZmFjZXRfd3JhcCh2YXJzKFN1cnZpdmFsU3RhdHVzKSkNCmBgYA0K