Objectives

By the end of this assignment, you should:

This assignment is due Thursday, January 30 at noon. Please turn your .html AND .Rmd files into Canvas. Your .Rmd file should knit without an error before turning in the assignment.

The first few excercises we’ll do in lab. They concern a dataset called babynames. The dataset is included in the “babynames” package.


  1. Alter the code to select just the n column:
select(babynames, name, prop)


  1. Use the logical operators to manipulate the code below to show: [a] All of the names where prop is greater than or equal to 0.08, [b] All of the children named “Sea” [c] All of the names that have a missing value for n (Hint: this should return an empty data set).
filter(babynames, name == "Garrett")


  1. Arrange babynames by n. Add prop as a second (tie breaking) variable to arrange on. What is the smallest value of n?


  1. Use %>% to write a sequence of functions that: 1. Filters babynames to just the girls that were born in 2015. 2. Selects the name and n columns. 3. Arranges the results so that the most popular names are near the top.



The next few exercises will focus on data from the Lewis & Frank (2018) replication of the Xu and Tenenbaum 2007 experiment (that we talked about in lecture). We’ll be working with data from the first experiment only. For reference, the journal paper write up of this study can be found here, and you can see the actual experiment that participants saw here.

The data are in a file called lewis_2018_exp1.csv. We can start by loading the data with the read_csv() function and saving it to a variable called lf_data:

lf_data <- read_csv("data/lewis_2018_exp1.csv")

This data frame is tidy, meaning each column is a variable and each row is an observation. In this case, each observation is a unique participant and trial combination. There are six variables in the data and each variable is described below. The first six rows of the data frame are also displayed below.

exp subids trial_num category condition proportion_basic_level_responses
1 1 9 vehicles three_subordinate 0
1 2 9 animals three_basic 1
1 3 9 animals three_superordinate 1
1 4 9 vehicles three_superordinate 1
1 5 9 animals three_superordinate 1
1 6 9 vegetables three_subordinate 0


  1. Select the columns subids, category, proportion_basic_level_responses from the data. Print the first six rows of this data frame.


  1. Print the first six rows of a data frame that does NOT include the category column.

Note: the template for the remaining exercises is blank, and so you will need to add R chunks where appropriate.


  1. Use logical tests and Boolean operators to return only the rows that contain trials (rows): [a] with category as vegetables, [b] with category as animals and a trial number less than 7, [c] with category as vegetables or animals, [d] with at least one basic level response in the “one” condition.


  1. The following code selects all trials (rows) where the condition was either “three_subordinate” or “one.” Rewrite this code in a way that uses the %in% operator.
filter(lf_data, condition == "three_subordinate" | condition == "one")


  1. How many trials are there where the category is either vegetables or animals? Use nrow().


  1. The three following sets of commands are written without the pipe operator (%>%). Rewrite each one to include the pipe.

[a]

var1 <- mutate(lf_data, category)

[b]

var1 <- select(lf_data, category)
var2 <- nrow(var1)

[c]

var1 <- filter(lf_data, trial_num == 1)
var2 <- filter(var1, category == "animals")
var3 <- select(var2, trial_num, category)


  1. The two following sets of commands are written with the pipe operator. Rewrite each one to exclude the pipe.

[a]

lf_data %>%
  filter(trial_num < 6) %>%
  nrow()

[b]

lf_data %>%
  select(subids, category, proportion_basic_level_responses) %>%
  filter(subids == 1) %>%
  arrange(category)


  1. Look at the code below. Describe in full sentences what this code does.
lf_data %>%
  select(subids, category, condition) %>%
  filter(category == "vehicles" & condition != "one") %>%
  arrange(-subids)


  1. On the first day of class, we talked about the “Sally Anne Task” that measures children’s understanding of theory of mind (example videos). Describe four variables that you could measure in this task to assess children’s theory of mind performance. Specifically, describe (1) one qualitative variable, (2) one quantitative - binary variable, (3) one quantitative - numeric, and (4) one quantitative - real variable. For each variable, give a one sentence description of the variable, AND one example value of that variable with units.


  1. Consider the following claim: “The scientific process is a social endeavor.” To what extent is this statement true or not true? What are the implications of your response for research methods in psychological science? Please respond with a short paragraph.
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAxOiBDdW11bGF0aXZlIFNjaWVuY2UgYW5kIEludHJvIHRvIGRwbHlyIgpzdWJ0aXRsZTogIk1vZGVybiBSZXNlYXJjaCBNZXRob2RzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNzczogLi4vbGFiLmNzcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogZmFsc2UKICAgIHRvY19mbG9hdDogZmFsc2UKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGJhYnluYW1lcykKYGBgCgoKPGJyPgo8YnI+CjxkaXYgaWQ9ImJveGVkdGV4dCI+CgogPGZvbnQgc2l6ZT0iNCI+ICoqT2JqZWN0aXZlcyoqIDwvZm9udD4gCiAKQnkgdGhlIGVuZCBvZiB0aGlzIGFzc2lnbm1lbnQsIHlvdSBzaG91bGQ6CgotIHVuZGVyc3RhbmQgdGhlIGNvbmNlcHQgb2YgImN1bXVsYXRpdmUgc2NpZW5jZSIKLSBiZSBhYmxlIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIGEgdmFyaWFibGUKLSB1bmRlcnN0YW5kIGhvdyB0byB1c2UgdGhlIHBpcGUgb3BlcmF0b3IgKGAlPiVgKQotIHVuZGVyc3RhbmQgaG93IHRvIGlzb2xhdGUgZGF0YSAoIGBzZWxlY3RgLCBgZmlsdGVyYCwgYGFycmFuZ2VgKQotIHVuZGVyc3RhbmQgaG93IHRvIGNvdW50IHJvd3MgaW4gYSBkYXRhIGZyYW1lIChgbnJvd2ApCjwvZGl2PgoKVGhpcyBhc3NpZ25tZW50IGlzIGR1ZSAqKlRodXJzZGF5LCBKYW51YXJ5IDMwIGF0IG5vb24qKi4gUGxlYXNlIHR1cm4geW91ciAuaHRtbCBBTkQgLlJtZCBmaWxlcyBpbnRvIENhbnZhcy4gWW91ciAuUm1kIGZpbGUgc2hvdWxkIGtuaXQgd2l0aG91dCBhbiBlcnJvciBiZWZvcmUgdHVybmluZyBpbiB0aGUgYXNzaWdubWVudC4KClRoZSBmaXJzdCBmZXcgZXhjZXJjaXNlcyB3ZSdsbCBkbyBpbiBsYWIuIFRoZXkgY29uY2VybiBhIGRhdGFzZXQgY2FsbGVkIGBiYWJ5bmFtZXNgLiBUaGUgZGF0YXNldCBpcyBpbmNsdWRlZCBpbiB0aGUgImJhYnluYW1lcyIgcGFja2FnZS4KCjxicj4gCgooMSkgQWx0ZXIgdGhlIGNvZGUgdG8gc2VsZWN0IGp1c3QgdGhlIGBuYCBjb2x1bW46IAoKYGBge3IsIGVjaG8gPSBULCBldmFsID0gRn0gCnNlbGVjdChiYWJ5bmFtZXMsIG5hbWUsIHByb3ApCmBgYAoKPGJyPiAKCigxKSBVc2UgIHRoZSBsb2dpY2FsIG9wZXJhdG9ycyB0byBtYW5pcHVsYXRlIHRoZSBjb2RlIGJlbG93IHRvIHNob3c6ICBbYV0gQWxsIG9mIHRoZSBuYW1lcyB3aGVyZSBwcm9wIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjA4LCBbYl0gQWxsIG9mIHRoZSBjaGlsZHJlbiBuYW1lZCDigJxTZWHigJ0KW2NdIEFsbCBvZiB0aGUgbmFtZXMgdGhhdCBoYXZlIGEgbWlzc2luZyB2YWx1ZSBmb3IgbiAoSGludDogdGhpcyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGRhdGEgc2V0KS4KCmBgYHtyLCBlY2hvID0gVCwgZXZhbCA9IEZ9IApmaWx0ZXIoYmFieW5hbWVzLCBuYW1lID09ICJHYXJyZXR0IikKYGBgCgoKPGJyPiAKCigxKSBBcnJhbmdlIGJhYnluYW1lcyBieSBuLiBBZGQgcHJvcCBhcyBhIHNlY29uZCAodGllIGJyZWFraW5nKSB2YXJpYWJsZSB0byBhcnJhbmdlIG9uLgpXaGF0IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBvZiBuPwoKYGBge3IsIGVjaG8gPSBULCBldmFsID0gRn0gCmBgYCAKCjxicj4gCgooMSkgVXNlIGAlPiVgIHRvIHdyaXRlIGEgc2VxdWVuY2Ugb2YgZnVuY3Rpb25zIHRoYXQ6IDEuIEZpbHRlcnMgYmFieW5hbWVzIHRvIGp1c3QgdGhlIGdpcmxzIHRoYXQgd2VyZSBib3JuIGluIDIwMTUuIDIuIFNlbGVjdHMgdGhlIG5hbWUgYW5kIG4gY29sdW1ucy4gMy4gQXJyYW5nZXMgdGhlIHJlc3VsdHMgc28gdGhhdCB0aGUgbW9zdCBwb3B1bGFyIG5hbWVzIGFyZSBuZWFyIHRoZSB0b3AuCgo8YnI+IAoKKioqCgpUaGUgbmV4dCBmZXcgZXhlcmNpc2VzIHdpbGwgZm9jdXMgb24gZGF0YSBmcm9tIHRoZSBMZXdpcyAmIEZyYW5rICgyMDE4KSByZXBsaWNhdGlvbiBvZiB0aGUgWHUgYW5kIFRlbmVuYmF1bSAyMDA3IGV4cGVyaW1lbnQgKHRoYXQgd2UgdGFsa2VkIGFib3V0IGluIGxlY3R1cmUpLiAgIFdlJ2xsIGJlIHdvcmtpbmcgd2l0aCBkYXRhIGZyb20gdGhlIGZpcnN0IGV4cGVyaW1lbnQgb25seS4gIEZvciByZWZlcmVuY2UsIHRoZSBqb3VybmFsIHBhcGVyIHdyaXRlIHVwIG9mIHRoaXMgc3R1ZHkgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwOi8vd3d3LmFuZHJldy5jbXUuZWR1L3VzZXIvbW9sbHlsZXcvcGFwZXJzL0xGXzIwMTgucGRmKSwgYW5kIHlvdSBjYW4gc2VlIHRoZSBhY3R1YWwgZXhwZXJpbWVudCB0aGF0IHBhcnRpY2lwYW50cyBzYXcgW2hlcmVdKGh0dHBzOi8vbGFuZ2NvZy5zdGFuZm9yZC5lZHUvZXhwdHMvTUxML1hUTUVNL2V4cDEvZXhwMS5odG1sKS4KClRoZSBkYXRhIGFyZSBpbiBhIGZpbGUgY2FsbGVkIGBsZXdpc18yMDE4X2V4cDEuY3N2YC4gV2UgY2FuIHN0YXJ0IGJ5IGxvYWRpbmcgdGhlIGRhdGEgd2l0aCB0aGUgYHJlYWRfY3N2KClgIGZ1bmN0aW9uIGFuZCBzYXZpbmcgaXQgdG8gYSB2YXJpYWJsZSBjYWxsZWQgYGxmX2RhdGFgOgpgYGB7ciwgbWVzc2FnZSA9IEZ9CmxmX2RhdGEgPC0gcmVhZF9jc3YoImRhdGEvbGV3aXNfMjAxOF9leHAxLmNzdiIpCmBgYAoKVGhpcyBkYXRhIGZyYW1lIGlzICp0aWR5KiwgbWVhbmluZyBlYWNoIGNvbHVtbiBpcyBhIHZhcmlhYmxlIGFuZCBlYWNoIHJvdyBpcyBhbiBvYnNlcnZhdGlvbi4gSW4gdGhpcyBjYXNlLCBlYWNoIG9ic2VydmF0aW9uIGlzIGEgdW5pcXVlIHBhcnRpY2lwYW50IGFuZCB0cmlhbCBjb21iaW5hdGlvbi4gVGhlcmUgYXJlIHNpeCB2YXJpYWJsZXMgaW4gdGhlIGRhdGEgYW5kIGVhY2ggdmFyaWFibGUgaXMgZGVzY3JpYmVkIGJlbG93LiBUaGUgZmlyc3Qgc2l4IHJvd3Mgb2YgdGhlIGRhdGEgZnJhbWUgYXJlIGFsc28gZGlzcGxheWVkIGJlbG93LiAKCiogKipleHAqKiAtIEV4cGVyaW1lbnQgbnVtYmVyLiBMZXdpcyAmIEZyYW5rICgyMDE2KSBoYWQgMTIgZXhwZXJpbWVudHMgaW4gaXQ7IHRoZSBwcmVzZW50IGRhdGFzZXQgb25seSBpbmNsdWRlcyB0aGUgZGF0YSBmcm9tIHRoZSBmaXJzdCBleHBlcmltZW50LiAKKiAqKnN1YmlkcyoqIC0gU3ViamVjdCBJRC4gVGhpcyBpcyBhbiBhbm9ueW1vdXMgaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGV2ZXJ5IHBhcnRpY2lwYW50IGluIHRoZSBzdHVkeS4KKiAqKnRyaWFsX251bSoqIC0gRWFjaCBwYXJ0aWNpcGFudCBjb21wbGV0ZWQgMTIgInRyaWFscy4iIEluIHRoaXMgY2FzZSwgYSB0cmlhbCBpcyBhIHNpbmdsZSBzY3JlZW4gd2hlcmUgdGhlIHBhcnRpY2lwYW50IHNlZXMgYSBub3ZlbCB3b3JkLCBvbmUgb3IgbW9yZSBleGFtcGxlcywgYW5kIHRoZW4gaXMgYXNrZWQgdG8gY2xpY2sgb24gb3RoZXIgZXhhbXBsZXMgb2YgdGhlIG5vdmVsIHdvcmQuCiogKipjYXRlZ29yeSoqIC0gVGhlcmUgd2VyZSB0aHJlZSBkaWZmZXJlbnQgY2F0ZWdvcmllcyBvZiBvYmplY3RzOiB2ZWhpY2xlcywgdmVnZXRhYmxlcywgYW5kIGFuaW1hbHMuIEVhY2ggcGFydGljaXBhbnQgc2F3IHNvbWUgdHJpYWxzIGZyb20gZWFjaCBjYXRlZ29yeS4gCiogKipjb25kaXRpb24qKiAtIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRoYXQgd2UgbWFuaXB1bGF0ZWQuIEl0IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mIGV4YW1wbGVzIG9mIHRoZSBub3ZlbCB3b3JkIHBhcnRpY2lwYW50cyBzYXcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZS4gUGFydGljaXBhbnRzIHNhdyBlaXRoZXIgMyBzdWJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1Ym9yZGluYXRlIjsgZS5nLiwgMyBkYWxtYXRpb25zKSwgIDMgYmFzaWMgbGV2ZWwgZXhhbXBsZXMgKCJ0aHJlZV9iYXNpYyI7IGUuZy4gYSBkYWxtYXRpb24sIGEgcG9vZGxlLCBhbmQgYSBiZXJuZXNlIG1vdW50YWluIGRvZyksIDMgc3VwZXJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1cGVyb3JkaW5hdGUiOyBlLmcuIGEgZGFsbWF0aW9uLCBhIHJhYmJpdCwgYW5kIGEgaG9yc2UpLCBvciBqdXN0IGEgc2luZ2xlIGV4YW1wbGUgKCJvbmUiOyBlLmcuIDEgZGFsbWF0aW9uKS4KKiAqKnByb3BvcnRpb25fYmFzaWNfbGV2ZWxfcmVzcG9uc2VzKiogLSBUaGlzIGlzIHRoZSB2YXJpYWJsZSB0aGF0IHdlIG1lYXN1cmVkLiBJdCByZWZlcnMgdG8gdGhlIHByb3BvcnRpb24gKG91dCBvZiAyIHBvc3NpYmxlKSBvZiBiYXNpYyBsZXZlbCBleGFtcGxlcyB0aGF0IGEgcGFydGljaXBhbnQgc2VsZWN0ZWQuIAoKYGBge3IsIGVjaG8gPUZ9CmthYmxlKGhlYWQobGZfZGF0YSkpCmBgYAoKPGJyPiAKCigxKSBTZWxlY3QgdGhlIGNvbHVtbnMgYHN1Ymlkc2AsIGBjYXRlZ29yeWAsIGBwcm9wb3J0aW9uX2Jhc2ljX2xldmVsX3Jlc3BvbnNlc2AgZnJvbSB0aGUgZGF0YS4gUHJpbnQgdGhlIGZpcnN0IHNpeCByb3dzIG9mIHRoaXMgZGF0YSBmcmFtZS4gCgoKCjxicj4gCgooMSkgUHJpbnQgdGhlIGZpcnN0IHNpeCByb3dzIG9mIGEgZGF0YSBmcmFtZSB0aGF0IGRvZXMgTk9UIGluY2x1ZGUgdGhlIGBjYXRlZ29yeWAgY29sdW1uLgoKKk5vdGU6IHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHJlbWFpbmluZyBleGVyY2lzZXMgaXMgYmxhbmssIGFuZCBzbyB5b3Ugd2lsbCBuZWVkIHRvIGFkZCBSIGNodW5rcyB3aGVyZSBhcHByb3ByaWF0ZS4qCgo8YnI+IAoKKDEpIFVzZSBsb2dpY2FsIHRlc3RzIGFuZCBCb29sZWFuIG9wZXJhdG9ycyB0byByZXR1cm4gb25seSB0aGUgcm93cyB0aGF0IGNvbnRhaW4gdHJpYWxzIChyb3dzKTogW2FdIHdpdGggY2F0ZWdvcnkgYXMgdmVnZXRhYmxlcywgW2JdIHdpdGggY2F0ZWdvcnkgYXMgYW5pbWFscyBhbmQgYSB0cmlhbCBudW1iZXIgbGVzcyB0aGFuIDcsIFtjXSB3aXRoIGNhdGVnb3J5IGFzIHZlZ2V0YWJsZXMgb3IgYW5pbWFscywgIFtkXSB3aXRoIGF0IGxlYXN0IG9uZSBiYXNpYyBsZXZlbCByZXNwb25zZSBpbiB0aGUgIm9uZSIgY29uZGl0aW9uLgoKPGJyPiAKCigxKSBUaGUgZm9sbG93aW5nIGNvZGUgc2VsZWN0cyBhbGwgdHJpYWxzIChyb3dzKSB3aGVyZSB0aGUgY29uZGl0aW9uIHdhcyBlaXRoZXIgInRocmVlX3N1Ym9yZGluYXRlIiBvciAib25lLiIgUmV3cml0ZSB0aGlzIGNvZGUgaW4gYSB3YXkgdGhhdCB1c2VzIHRoZSBgJWluJWAgb3BlcmF0b3IuIAoKYGBge3IsIGV2YWwgPSBGfQpmaWx0ZXIobGZfZGF0YSwgY29uZGl0aW9uID09ICJ0aHJlZV9zdWJvcmRpbmF0ZSIgfCBjb25kaXRpb24gPT0gIm9uZSIpCmBgYAoKPGJyPiAKCigxKSBIb3cgbWFueSB0cmlhbHMgYXJlIHRoZXJlIHdoZXJlIHRoZSBjYXRlZ29yeSBpcyBlaXRoZXIgdmVnZXRhYmxlcyBvciBhbmltYWxzPyBVc2UgYG5yb3coKWAuCgo8YnI+IAoKKDEpIFRoZSB0aHJlZSBmb2xsb3dpbmcgc2V0cyBvZiBjb21tYW5kcyBhcmUgd3JpdHRlbiB3aXRob3V0IHRoZSBwaXBlIG9wZXJhdG9yIChgJT4lYCkuIFJld3JpdGUgZWFjaCBvbmUgdG8gaW5jbHVkZSB0aGUgcGlwZS4gCgpbYV0KYGBge3J9CnZhcjEgPC0gbXV0YXRlKGxmX2RhdGEsIGNhdGVnb3J5KQpgYGAKCltiXQpgYGB7cn0KdmFyMSA8LSBzZWxlY3QobGZfZGF0YSwgY2F0ZWdvcnkpCnZhcjIgPC0gbnJvdyh2YXIxKQpgYGAKCltjXQpgYGB7cn0KdmFyMSA8LSBmaWx0ZXIobGZfZGF0YSwgdHJpYWxfbnVtID09IDEpCnZhcjIgPC0gZmlsdGVyKHZhcjEsIGNhdGVnb3J5ID09ICJhbmltYWxzIikKdmFyMyA8LSBzZWxlY3QodmFyMiwgdHJpYWxfbnVtLCBjYXRlZ29yeSkKYGBgCgo8YnI+IAoKKDEpIFRoZSB0d28gZm9sbG93aW5nIHNldHMgb2YgY29tbWFuZHMgYXJlIHdyaXR0ZW4gd2l0aCB0aGUgcGlwZSBvcGVyYXRvci4gUmV3cml0ZSBlYWNoIG9uZSB0byBleGNsdWRlIHRoZSBwaXBlLiAKClthXQpgYGB7ciwgZXZhbCA9IEZ9CmxmX2RhdGEgJT4lCiAgZmlsdGVyKHRyaWFsX251bSA8IDYpICU+JQogIG5yb3coKQpgYGAKCltiXQpgYGB7ciwgZXZhbCA9IEZ9CmxmX2RhdGEgJT4lCiAgc2VsZWN0KHN1YmlkcywgY2F0ZWdvcnksIHByb3BvcnRpb25fYmFzaWNfbGV2ZWxfcmVzcG9uc2VzKSAlPiUKICBmaWx0ZXIoc3ViaWRzID09IDEpICU+JQogIGFycmFuZ2UoY2F0ZWdvcnkpCmBgYAoKPGJyPiAKCigxKSBMb29rIGF0IHRoZSBjb2RlIGJlbG93LiBEZXNjcmliZSBpbiBmdWxsIHNlbnRlbmNlcyB3aGF0IHRoaXMgY29kZSBkb2VzLgoKYGBge3IsIGV2YWwgPSBGfQpsZl9kYXRhICU+JQogIHNlbGVjdChzdWJpZHMsIGNhdGVnb3J5LCBjb25kaXRpb24pICU+JQogIGZpbHRlcihjYXRlZ29yeSA9PSAidmVoaWNsZXMiICYgY29uZGl0aW9uICE9ICJvbmUiKSAlPiUKICBhcnJhbmdlKC1zdWJpZHMpCmBgYAoKPGJyPiAKCigxKSBPbiB0aGUgZmlyc3QgZGF5IG9mIGNsYXNzLCB3ZSB0YWxrZWQgYWJvdXQgdGhlICJTYWxseSBBbm5lIFRhc2siIHRoYXQgbWVhc3VyZXMgY2hpbGRyZW4ncyB1bmRlcnN0YW5kaW5nIG9mIHRoZW9yeSBvZiBtaW5kIChbZXhhbXBsZSB2aWRlb3NdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9b2F6SzJma1JVMUFdKSkuIERlc2NyaWJlIGZvdXIgdmFyaWFibGVzIHRoYXQgeW91IGNvdWxkIG1lYXN1cmUgaW4gdGhpcyB0YXNrIHRvIGFzc2VzcyBjaGlsZHJlbidzIHRoZW9yeSBvZiBtaW5kIHBlcmZvcm1hbmNlLiBTcGVjaWZpY2FsbHksIGRlc2NyaWJlICgxKSBvbmUgcXVhbGl0YXRpdmUgdmFyaWFibGUsICgyKSBvbmUgcXVhbnRpdGF0aXZlIC0gYmluYXJ5IHZhcmlhYmxlLCAoMykgb25lIHF1YW50aXRhdGl2ZSAtIG51bWVyaWMsIGFuZCAoNCkgb25lIHF1YW50aXRhdGl2ZSAtICByZWFsIHZhcmlhYmxlLiBGb3IgZWFjaCB2YXJpYWJsZSwgZ2l2ZSBhIG9uZSBzZW50ZW5jZSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaWFibGUsIEFORCBvbmUgZXhhbXBsZSB2YWx1ZSBvZiB0aGF0IHZhcmlhYmxlIHdpdGggdW5pdHMuCgo8YnI+IAoKCigxKSBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNsYWltOiAiVGhlIHNjaWVudGlmaWMgcHJvY2VzcyBpcyBhIHNvY2lhbCBlbmRlYXZvci4iIFRvIHdoYXQgZXh0ZW50IGlzIHRoaXMgc3RhdGVtZW50IHRydWUgb3Igbm90IHRydWU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgeW91ciByZXNwb25zZSBmb3IgcmVzZWFyY2ggbWV0aG9kcyBpbiBwc3ljaG9sb2dpY2FsIHNjaWVuY2U/IFBsZWFzZSByZXNwb25kIHdpdGggYSBzaG9ydCBwYXJhZ3JhcGguIAoK