Manizales 16 de marzo de 2022

Referencia: Informe 13 de Abril

Getting data

facebook <- read_csv("https://docs.google.com/spreadsheets/d/1iv_7lBeondfTiLN_kLRnAW-9UnmT4lw6RVQxCuSD0vY/export?format=csv&gid=1112529965", col_types = cols()) |> 
  mutate(Date = mdy(Date))

youtube <- read_csv("https://docs.google.com/spreadsheets/d/1iv_7lBeondfTiLN_kLRnAW-9UnmT4lw6RVQxCuSD0vY/export?format=csv&gid=1622987274", col_types = cols())
  
facebook[is.na(facebook)] <- 0
linkedind <- read_csv("https://docs.google.com/spreadsheets/d/1iv_7lBeondfTiLN_kLRnAW-9UnmT4lw6RVQxCuSD0vY/export?format=csv&gid=712028608") |>
   mutate(date = mdy(date))

facebook |> dim()
#twitter <- read_sheet("https://docs.google.com/spreadsheets/d/1kM1IZfCGWZ8k-jFlx4Ak-OIEp-3MVRdCpvV00DXmNiI/edit#gid=1214992278", sheet = "twitter")

google_analytics <- read_csv("https://docs.google.com/spreadsheets/d/1iv_7lBeondfTiLN_kLRnAW-9UnmT4lw6RVQxCuSD0vY/export?format=csv&gid=1575918127")
  
  

Facebook

Global Analysis 1

total_likes <- 
  facebook %>% 
  select(Date, Lifetime_Total_Likes) %>% 
  ggplot(aes(x = Date, y = Lifetime_Total_Likes,)) +
  geom_line() +
  geom_point() +
  ggtitle("Total likes acummulated per day") +
  ylab("Total likes")





total_engagement <- 
  facebook %>% 
  select(Date, Weekly_Page_Engaged_Users) %>% 
  ggplot(aes(x = Date, y = Weekly_Page_Engaged_Users)) +
  geom_line() +
  geom_point() +
  ggtitle("Total engaged acummulated per day") +
  ylab("Total engaged")

total_reach <- 
  facebook %>% 
  select(Date, Weekly_Total_Reach ) %>% 
  ggplot(aes(x = Date, y = Weekly_Total_Reach)) +
  geom_line() +
  geom_point() +
  ggtitle("Total reach acummulated per day") +
  ylab("Total reach")

total_impresions <-
  facebook %>% 
  select(Date, Weekly_Total_Impressions) %>% 
  ggplot(aes(x = Date, y = Weekly_Total_Impressions)) +
  geom_line() +
  geom_point() +
  ggtitle("Total impressions acummulated per day") +
  ylab("Total Impressions")

global_analysis <- 
  ggarrange(total_likes, 
            total_engagement, 
            total_reach,
            total_impresions,
      
            labels = c("A", "B", "C", "D"),
            ncol = 2, nrow = 2)
global_analysis

Global Analysis 2

total_daily_likes <- 
  facebook %>% 
  select(Date, Daily_New_Likes) %>% 
  ggplot(aes(x = Date, y = Daily_New_Likes)) +
  geom_line() +
  geom_point() +
  ggtitle("Daily New Likes") +
  ylab("Total daily likes")

total_daily_engagement <- 
  facebook %>% 
  select(Date, Daily_Page_Engaged_Users) %>% 
  ggplot(aes(x = Date, y = Daily_Page_Engaged_Users )) +
  geom_line() +
  geom_point() +
  ggtitle("Daily new engaged ") +
  ylab("Total daily engaged")

total_daily_reach <- 
  facebook %>% 
  select(Date, Daily_Total_Reach) %>% 
  ggplot(aes(x = Date, y = Daily_Total_Reach)) +
  geom_line() +
  geom_point() +
  ggtitle("Daily new reach") +
  ylab("Total daily reach")

total_daily_impresions <-
  facebook %>% 
  select(Date, Daily_Total_Impressions) %>% 
  ggplot(aes(x = Date, y = Daily_Total_Impressions)) +
  geom_line() +
  geom_point() +
  ggtitle("Daily New Impressions") +
  ylab("Total daily Impressions")

global_analysis <- 
  ggarrange(total_daily_likes, 
            total_daily_engagement, 
            total_daily_reach,
            total_daily_impresions,
            labels = c("A", "B", "C", "D"),
            ncol = 2, nrow = 2)
global_analysis

Past week

facebook_week <- 
  facebook %>% 
  filter(Date >= "2022-02-08") %>% 
  mutate(Date = lubridate::wday(Date, label = TRUE))

total_daily_likes_week <- 
  facebook_week %>% 
  select(Date, Daily_New_Likes) %>% 
  ggplot(aes(x = Date, y = Daily_New_Likes, group = 1)) +
  geom_point() +
  geom_line() +
  ggtitle("Daily New Likes") +
  ylab("Total daily likes")

total_daily_engagement_week <- 
  facebook_week %>% 
  select(Date, Daily_Page_Engaged_Users) %>% 
  ggplot(aes(x = Date, y = Daily_Page_Engaged_Users, group = 1 )) +
  geom_line() +
  geom_point() +
  ggtitle("Daily new engaged ") +
  ylab("Total daily engaged")

total_daily_reach_week <- 
  facebook_week %>% 
  select(Date, Daily_Total_Reach) %>% 
  ggplot(aes(x = Date, y = Daily_Total_Reach, group = 1)) +
  geom_line() +
  geom_point() +
  ggtitle("Daily new reach") +
  ylab("Total daily reach")

total_daily_impresions_week <-
  facebook_week %>% 
  select(Date, Daily_Total_Impressions) %>% 
  ggplot(aes(x = Date, y = Daily_Total_Impressions, group = 1)) +
  geom_line() +
  geom_point() +
  ggtitle("Daily New Impressions") +
  ylab("Total daily Impressions")

global_analysis_week <- 
  ggarrange(total_daily_likes_week, 
            total_daily_engagement_week, 
            total_daily_reach_week,
            total_daily_impresions_week,
            labels = c("A", "B", "C", "D"),
            ncol = 2, nrow = 2)
global_analysis_week

Twitter

twitter %>% 
  select(Date,Impressions_Tw) %>% 
  ggplot(aes(x = Date, y = Impressions_Tw)) +
  geom_line() +
  ggtitle("Total Impressions twitter ") +
  ylab("Total Impressions")
  
twitter_week <- 
  twitter %>% 
  filter(Date >= "2020-11-16" & Date < "2020-11-23") %>% 
  mutate(Date = lubridate::wday(Date, label = TRUE)) 

Impressions_tw_week <- 
  twitter_week %>% 
  select(Date, Impressions_Tw) %>% 
  ggplot(aes(x = Date, y = Impressions_Tw, group = 1)) +
  geom_point() +
  geom_line() +
  ggtitle("Daily New Impressions") +
  ylab("Total daily Impressions")

Impressions_tw_week

Youtube

total_views <-
  youtube %>% 
  select(Date, Views)
  
ggplot(total_views) +
  geom_line(aes(x=Date, y=Views, color="red")) +
  geom_point(aes(x=Date, y=Views, color= "blue")) +
  ggtitle("Views") +
  ylab("total Views") 

total_Subscribers <-
  youtube %>% 
  select(Date, Subscribers)

ggplot(total_Subscribers) +
  geom_line(aes(x=Date, y=Subscribers,color="red")) +
  geom_point(aes(x=Date, y=Subscribers, color= "blue")) +
  ggtitle("Subscribers") +
  ylab("total_Subscribers")

total_likes <-
  youtube %>% 
  select(Date, likes)
  
ggplot(total_likes) +
  geom_line(aes(x=Date, y=likes, color="red")) +
  geom_point(aes(x=Date, y=likes, color= "blue")) +
  ggtitle("likes") +
  ylab("total likes")

total_impressions <-
  youtube %>% 
  select(Date, impressions)
  
ggplot(total_impressions) +
  geom_line(aes(x=Date, y=impressions, color="red")) +
  geom_point(aes(x=Date, y=impressions, color= "blue")) +
  ggtitle("impresions") +
  ylab("total impresions")

total_shares <-
  youtube %>% 
  select(Date, shares)
  

ggplot(total_shares) +
  geom_line(aes(x=Date, y=shares, color="red")) +
  geom_point(aes(x=Date, y=shares, color= "blue")) +
  ggtitle("shares") +
  ylab("total shares")

total_dislikes <-
  youtube %>% 
  select(Date, dislikes) 

ggplot(total_dislikes) +
  geom_line(aes(x=Date, y= dislikes, color="red")) +
  geom_point(aes(x=Date, y= dislikes, color="blue")) +
  ggtitle("dislikes") +
  ylab("total dislikes")

NA
total_comments_added <-
  youtube %>% 
  select(Date, comments_added)


ggplot(total_comments_added) +
  geom_line(aes(x=Date, y=comments_added, color="red")) +
  geom_point(aes(x=Date, y=comments_added, color="blue")) +
  ggtitle("comments added") +
  ylab("total comments added")

linkedin

total_view <-
  linkedind %>%  
  select(date, Overall_page_views_total)

ggplot(total_view) +
  geom_point(aes(x=date, y=Overall_page_views_total, color= "blue")) +
  geom_line(aes(x=date, y=Overall_page_views_total, color="red")) +
  ggtitle("Overal page views total") +
  ylab("total view")

total_visitors <-
  linkedind %>% 
  select(date, Overall_page_unique_visitors_total) 
ggplot(total_visitors) +
  geom_point(aes(x=date, y=Overall_page_unique_visitors_total, color= "blue"))+
  geom_line(aes(x=date, y=Overall_page_unique_visitors_total, color="red")) +
  ggtitle("Overall page unique visitors total") +
  ylab("total visitors")

NA
NA
page_views <-
  linkedind %>% 
  select(date, Total_Page_Views_Total)
  
ggplot(page_views) +
  geom_point(aes(x=date, y=Total_Page_Views_Total,color= "blue")) +
  geom_line(aes(x=date, y=Total_Page_Views_Total, color= "red")) +
  ggtitle("Page Views Total") +
  ylab("page views")

total_followers <-
  linkedind %>% 
  select(date, followers)
  
ggplot(total_followers) +
  geom_point(aes(x=date, y=followers, color= "blue")) +
  geom_line(aes(x=date, y=followers,color= "red" )) +
  ggtitle("total followers") +
  ylab("followers")

total_impressions <-
  linkedind %>% 
  select(date, impressions)


ggplot(total_impressions) +
  geom_line(aes(x= date, y= impressions, color="red")) +
  geom_point(aes(x= date, y= impressions, color="blue")) +
  ggtitle("total impressions") +
  ylab("impressions")

NA

```

LS0tDQp0aXRsZTogIkluZm9ybWUgTm8gMjAiDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IA0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQNCmVkaXRvcl9vcHRpb25zOg0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQoNCiAgDQotLS0NCk1hbml6YWxlcyAxNiBkZSBtYXJ6byBkZSAyMDIyDQoNClJlZmVyZW5jaWE6IEluZm9ybWUgIDEzIGRlIEFicmlsDQoNCg0KYGBge3IgZWNobz0sIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCmxpYnJhcnkoZ29vZ2xlc2hlZXRzNCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShnZ3B1YnIpDQpsaWJyYXJ5KGdwYWlycykNCmxpYnJhcnkoUGVyZm9ybWFuY2VBbmFseXRpY3MpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZ29vZ2xlQW5hbHl0aWNzUikNCmxpYnJhcnkodG9zcikNCmxpYnJhcnkoaWdyYXBoKQ0KbGlicmFyeSh0aWR5dGV4dCkNCmxpYnJhcnkoY29sb3VycGlja2VyKQ0KbGlicmFyeShjb2xvcnNwYWNlKQ0KDQoNCg0KDQoNCmBgYA0KDQpHZXR0aW5nIGRhdGEgDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpmYWNlYm9vayA8LSByZWFkX2NzdigiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMWl2XzdsQmVvbmRmVGlMTl9rTFJuQVctOVVubVQ0bHc2UlZReEN1U0QwdlkvZXhwb3J0P2Zvcm1hdD1jc3YmZ2lkPTExMTI1Mjk5NjUiLCBjb2xfdHlwZXMgPSBjb2xzKCkpIHw+IA0KICBtdXRhdGUoRGF0ZSA9IG1keShEYXRlKSkNCg0KeW91dHViZSA8LSByZWFkX2NzdigiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMWl2XzdsQmVvbmRmVGlMTl9rTFJuQVctOVVubVQ0bHc2UlZReEN1U0QwdlkvZXhwb3J0P2Zvcm1hdD1jc3YmZ2lkPTE2MjI5ODcyNzQiLCBjb2xfdHlwZXMgPSBjb2xzKCkpDQogIA0KZmFjZWJvb2tbaXMubmEoZmFjZWJvb2spXSA8LSAwDQpsaW5rZWRpbmQgPC0gcmVhZF9jc3YoImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFpdl83bEJlb25kZlRpTE5fa0xSbkFXLTlVbm1UNGx3NlJWUXhDdVNEMHZZL2V4cG9ydD9mb3JtYXQ9Y3N2JmdpZD03MTIwMjg2MDgiKSB8Pg0KICAgbXV0YXRlKGRhdGUgPSBtZHkoZGF0ZSkpDQoNCmZhY2Vib29rIHw+IGRpbSgpDQojdHdpdHRlciA8LSByZWFkX3NoZWV0KCJodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xa00xSVpmQ0dXWjhrLWpGbHg0QWstT0lFcC0zTVZSZENwdlYwMERYbU5pSS9lZGl0I2dpZD0xMjE0OTkyMjc4Iiwgc2hlZXQgPSAidHdpdHRlciIpDQoNCmdvb2dsZV9hbmFseXRpY3MgPC0gcmVhZF9jc3YoImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFpdl83bEJlb25kZlRpTE5fa0xSbkFXLTlVbm1UNGx3NlJWUXhDdVNEMHZZL2V4cG9ydD9mb3JtYXQ9Y3N2JmdpZD0xNTc1OTE4MTI3IikNCiAgDQogIA0KYGBgDQoNCg0KDQojIEZhY2Vib29rDQoNCiMjIEdsb2JhbCBBbmFseXNpcyAxDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF9saWtlcyA8LSANCiAgZmFjZWJvb2sgJT4lIA0KICBzZWxlY3QoRGF0ZSwgTGlmZXRpbWVfVG90YWxfTGlrZXMpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IExpZmV0aW1lX1RvdGFsX0xpa2VzLCkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZ3RpdGxlKCJUb3RhbCBsaWtlcyBhY3VtbXVsYXRlZCBwZXIgZGF5IikgKw0KICB5bGFiKCJUb3RhbCBsaWtlcyIpDQoNCg0KDQoNCg0KdG90YWxfZW5nYWdlbWVudCA8LSANCiAgZmFjZWJvb2sgJT4lIA0KICBzZWxlY3QoRGF0ZSwgV2Vla2x5X1BhZ2VfRW5nYWdlZF9Vc2VycykgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBEYXRlLCB5ID0gV2Vla2x5X1BhZ2VfRW5nYWdlZF9Vc2VycykpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZ3RpdGxlKCJUb3RhbCBlbmdhZ2VkIGFjdW1tdWxhdGVkIHBlciBkYXkiKSArDQogIHlsYWIoIlRvdGFsIGVuZ2FnZWQiKQ0KDQp0b3RhbF9yZWFjaCA8LSANCiAgZmFjZWJvb2sgJT4lIA0KICBzZWxlY3QoRGF0ZSwgV2Vla2x5X1RvdGFsX1JlYWNoICkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBEYXRlLCB5ID0gV2Vla2x5X1RvdGFsX1JlYWNoKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdndGl0bGUoIlRvdGFsIHJlYWNoIGFjdW1tdWxhdGVkIHBlciBkYXkiKSArDQogIHlsYWIoIlRvdGFsIHJlYWNoIikNCg0KdG90YWxfaW1wcmVzaW9ucyA8LQ0KICBmYWNlYm9vayAlPiUgDQogIHNlbGVjdChEYXRlLCBXZWVrbHlfVG90YWxfSW1wcmVzc2lvbnMpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IFdlZWtseV9Ub3RhbF9JbXByZXNzaW9ucykpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZ3RpdGxlKCJUb3RhbCBpbXByZXNzaW9ucyBhY3VtbXVsYXRlZCBwZXIgZGF5IikgKw0KICB5bGFiKCJUb3RhbCBJbXByZXNzaW9ucyIpDQoNCmdsb2JhbF9hbmFseXNpcyA8LSANCiAgZ2dhcnJhbmdlKHRvdGFsX2xpa2VzLCANCiAgICAgICAgICAgIHRvdGFsX2VuZ2FnZW1lbnQsIA0KICAgICAgICAgICAgdG90YWxfcmVhY2gsDQogICAgICAgICAgICB0b3RhbF9pbXByZXNpb25zLA0KICAgICAgDQogICAgICAgICAgICBsYWJlbHMgPSBjKCJBIiwgIkIiLCAiQyIsICJEIiksDQogICAgICAgICAgICBuY29sID0gMiwgbnJvdyA9IDIpDQpnbG9iYWxfYW5hbHlzaXMNCg0KYGBgDQoNCg0KIyMgR2xvYmFsIEFuYWx5c2lzIDINCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnRvdGFsX2RhaWx5X2xpa2VzIDwtIA0KICBmYWNlYm9vayAlPiUgDQogIHNlbGVjdChEYXRlLCBEYWlseV9OZXdfTGlrZXMpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IERhaWx5X05ld19MaWtlcykpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZ3RpdGxlKCJEYWlseSBOZXcgTGlrZXMiKSArDQogIHlsYWIoIlRvdGFsIGRhaWx5IGxpa2VzIikNCg0KdG90YWxfZGFpbHlfZW5nYWdlbWVudCA8LSANCiAgZmFjZWJvb2sgJT4lIA0KICBzZWxlY3QoRGF0ZSwgRGFpbHlfUGFnZV9FbmdhZ2VkX1VzZXJzKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IERhdGUsIHkgPSBEYWlseV9QYWdlX0VuZ2FnZWRfVXNlcnMgKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdndGl0bGUoIkRhaWx5IG5ldyBlbmdhZ2VkICIpICsNCiAgeWxhYigiVG90YWwgZGFpbHkgZW5nYWdlZCIpDQoNCnRvdGFsX2RhaWx5X3JlYWNoIDwtIA0KICBmYWNlYm9vayAlPiUgDQogIHNlbGVjdChEYXRlLCBEYWlseV9Ub3RhbF9SZWFjaCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBEYXRlLCB5ID0gRGFpbHlfVG90YWxfUmVhY2gpKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2d0aXRsZSgiRGFpbHkgbmV3IHJlYWNoIikgKw0KICB5bGFiKCJUb3RhbCBkYWlseSByZWFjaCIpDQoNCnRvdGFsX2RhaWx5X2ltcHJlc2lvbnMgPC0NCiAgZmFjZWJvb2sgJT4lIA0KICBzZWxlY3QoRGF0ZSwgRGFpbHlfVG90YWxfSW1wcmVzc2lvbnMpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IERhaWx5X1RvdGFsX0ltcHJlc3Npb25zKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdndGl0bGUoIkRhaWx5IE5ldyBJbXByZXNzaW9ucyIpICsNCiAgeWxhYigiVG90YWwgZGFpbHkgSW1wcmVzc2lvbnMiKQ0KDQpnbG9iYWxfYW5hbHlzaXMgPC0gDQogIGdnYXJyYW5nZSh0b3RhbF9kYWlseV9saWtlcywgDQogICAgICAgICAgICB0b3RhbF9kYWlseV9lbmdhZ2VtZW50LCANCiAgICAgICAgICAgIHRvdGFsX2RhaWx5X3JlYWNoLA0KICAgICAgICAgICAgdG90YWxfZGFpbHlfaW1wcmVzaW9ucywNCiAgICAgICAgICAgIGxhYmVscyA9IGMoIkEiLCAiQiIsICJDIiwgIkQiKSwNCiAgICAgICAgICAgIG5jb2wgPSAyLCBucm93ID0gMikNCmdsb2JhbF9hbmFseXNpcw0KDQpgYGANCg0KDQoNCiMjIFBhc3Qgd2Vlaw0KDQoNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmZhY2Vib29rX3dlZWsgPC0gDQogIGZhY2Vib29rICU+JSANCiAgZmlsdGVyKERhdGUgPj0gIjIwMjItMDItMDgiKSAlPiUgDQogIG11dGF0ZShEYXRlID0gbHVicmlkYXRlOjp3ZGF5KERhdGUsIGxhYmVsID0gVFJVRSkpDQoNCnRvdGFsX2RhaWx5X2xpa2VzX3dlZWsgPC0gDQogIGZhY2Vib29rX3dlZWsgJT4lIA0KICBzZWxlY3QoRGF0ZSwgRGFpbHlfTmV3X0xpa2VzKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IERhdGUsIHkgPSBEYWlseV9OZXdfTGlrZXMsIGdyb3VwID0gMSkpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBnZ3RpdGxlKCJEYWlseSBOZXcgTGlrZXMiKSArDQogIHlsYWIoIlRvdGFsIGRhaWx5IGxpa2VzIikNCg0KdG90YWxfZGFpbHlfZW5nYWdlbWVudF93ZWVrIDwtIA0KICBmYWNlYm9va193ZWVrICU+JSANCiAgc2VsZWN0KERhdGUsIERhaWx5X1BhZ2VfRW5nYWdlZF9Vc2VycykgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBEYXRlLCB5ID0gRGFpbHlfUGFnZV9FbmdhZ2VkX1VzZXJzLCBncm91cCA9IDEgKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdndGl0bGUoIkRhaWx5IG5ldyBlbmdhZ2VkICIpICsNCiAgeWxhYigiVG90YWwgZGFpbHkgZW5nYWdlZCIpDQoNCnRvdGFsX2RhaWx5X3JlYWNoX3dlZWsgPC0gDQogIGZhY2Vib29rX3dlZWsgJT4lIA0KICBzZWxlY3QoRGF0ZSwgRGFpbHlfVG90YWxfUmVhY2gpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IERhaWx5X1RvdGFsX1JlYWNoLCBncm91cCA9IDEpKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgZ2d0aXRsZSgiRGFpbHkgbmV3IHJlYWNoIikgKw0KICB5bGFiKCJUb3RhbCBkYWlseSByZWFjaCIpDQoNCnRvdGFsX2RhaWx5X2ltcHJlc2lvbnNfd2VlayA8LQ0KICBmYWNlYm9va193ZWVrICU+JSANCiAgc2VsZWN0KERhdGUsIERhaWx5X1RvdGFsX0ltcHJlc3Npb25zKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IERhdGUsIHkgPSBEYWlseV9Ub3RhbF9JbXByZXNzaW9ucywgZ3JvdXAgPSAxKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdndGl0bGUoIkRhaWx5IE5ldyBJbXByZXNzaW9ucyIpICsNCiAgeWxhYigiVG90YWwgZGFpbHkgSW1wcmVzc2lvbnMiKQ0KDQpnbG9iYWxfYW5hbHlzaXNfd2VlayA8LSANCiAgZ2dhcnJhbmdlKHRvdGFsX2RhaWx5X2xpa2VzX3dlZWssIA0KICAgICAgICAgICAgdG90YWxfZGFpbHlfZW5nYWdlbWVudF93ZWVrLCANCiAgICAgICAgICAgIHRvdGFsX2RhaWx5X3JlYWNoX3dlZWssDQogICAgICAgICAgICB0b3RhbF9kYWlseV9pbXByZXNpb25zX3dlZWssDQogICAgICAgICAgICBsYWJlbHMgPSBjKCJBIiwgIkIiLCAiQyIsICJEIiksDQogICAgICAgICAgICBuY29sID0gMiwgbnJvdyA9IDIpDQpnbG9iYWxfYW5hbHlzaXNfd2Vlaw0KYGBgDQogDQoNCiMgVHdpdHRlcg0KDQpgYGB7cn0NCnR3aXR0ZXIgJT4lIA0KICBzZWxlY3QoRGF0ZSxJbXByZXNzaW9uc19UdykgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBEYXRlLCB5ID0gSW1wcmVzc2lvbnNfVHcpKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2d0aXRsZSgiVG90YWwgSW1wcmVzc2lvbnMgdHdpdHRlciAiKSArDQogIHlsYWIoIlRvdGFsIEltcHJlc3Npb25zIikNCiAgDQp0d2l0dGVyX3dlZWsgPC0gDQogIHR3aXR0ZXIgJT4lIA0KICBmaWx0ZXIoRGF0ZSA+PSAiMjAyMC0xMS0xNiIgJiBEYXRlIDwgIjIwMjAtMTEtMjMiKSAlPiUgDQogIG11dGF0ZShEYXRlID0gbHVicmlkYXRlOjp3ZGF5KERhdGUsIGxhYmVsID0gVFJVRSkpIA0KDQpJbXByZXNzaW9uc190d193ZWVrIDwtIA0KICB0d2l0dGVyX3dlZWsgJT4lIA0KICBzZWxlY3QoRGF0ZSwgSW1wcmVzc2lvbnNfVHcpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gRGF0ZSwgeSA9IEltcHJlc3Npb25zX1R3LCBncm91cCA9IDEpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2d0aXRsZSgiRGFpbHkgTmV3IEltcHJlc3Npb25zIikgKw0KICB5bGFiKCJUb3RhbCBkYWlseSBJbXByZXNzaW9ucyIpDQoNCkltcHJlc3Npb25zX3R3X3dlZWsNCg0KYGBgDQoNCg0KIyBZb3V0dWJlIA0KDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF92aWV3cyA8LQ0KICB5b3V0dWJlICU+JSANCiAgc2VsZWN0KERhdGUsIFZpZXdzKQ0KICANCmdncGxvdCh0b3RhbF92aWV3cykgKw0KICBnZW9tX2xpbmUoYWVzKHg9RGF0ZSwgeT1WaWV3cywgY29sb3I9InJlZCIpKSArDQogIGdlb21fcG9pbnQoYWVzKHg9RGF0ZSwgeT1WaWV3cywgY29sb3I9ICJibHVlIikpICsNCiAgZ2d0aXRsZSgiVmlld3MiKSArDQogIHlsYWIoInRvdGFsIFZpZXdzIikgDQpgYGANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnRvdGFsX1N1YnNjcmliZXJzIDwtDQogIHlvdXR1YmUgJT4lIA0KICBzZWxlY3QoRGF0ZSwgU3Vic2NyaWJlcnMpDQoNCmdncGxvdCh0b3RhbF9TdWJzY3JpYmVycykgKw0KICBnZW9tX2xpbmUoYWVzKHg9RGF0ZSwgeT1TdWJzY3JpYmVycyxjb2xvcj0icmVkIikpICsNCiAgZ2VvbV9wb2ludChhZXMoeD1EYXRlLCB5PVN1YnNjcmliZXJzLCBjb2xvcj0gImJsdWUiKSkgKw0KICBnZ3RpdGxlKCJTdWJzY3JpYmVycyIpICsNCiAgeWxhYigidG90YWxfU3Vic2NyaWJlcnMiKQ0KYGBgDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF9saWtlcyA8LQ0KICB5b3V0dWJlICU+JSANCiAgc2VsZWN0KERhdGUsIGxpa2VzKQ0KICANCmdncGxvdCh0b3RhbF9saWtlcykgKw0KICBnZW9tX2xpbmUoYWVzKHg9RGF0ZSwgeT1saWtlcywgY29sb3I9InJlZCIpKSArDQogIGdlb21fcG9pbnQoYWVzKHg9RGF0ZSwgeT1saWtlcywgY29sb3I9ICJibHVlIikpICsNCiAgZ2d0aXRsZSgibGlrZXMiKSArDQogIHlsYWIoInRvdGFsIGxpa2VzIikNCg0KYGBgDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF9pbXByZXNzaW9ucyA8LQ0KICB5b3V0dWJlICU+JSANCiAgc2VsZWN0KERhdGUsIGltcHJlc3Npb25zKQ0KICANCmdncGxvdCh0b3RhbF9pbXByZXNzaW9ucykgKw0KICBnZW9tX2xpbmUoYWVzKHg9RGF0ZSwgeT1pbXByZXNzaW9ucywgY29sb3I9InJlZCIpKSArDQogIGdlb21fcG9pbnQoYWVzKHg9RGF0ZSwgeT1pbXByZXNzaW9ucywgY29sb3I9ICJibHVlIikpICsNCiAgZ2d0aXRsZSgiaW1wcmVzaW9ucyIpICsNCiAgeWxhYigidG90YWwgaW1wcmVzaW9ucyIpDQoNCmBgYA0KDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF9zaGFyZXMgPC0NCiAgeW91dHViZSAlPiUgDQogIHNlbGVjdChEYXRlLCBzaGFyZXMpDQogIA0KDQpnZ3Bsb3QodG90YWxfc2hhcmVzKSArDQogIGdlb21fbGluZShhZXMoeD1EYXRlLCB5PXNoYXJlcywgY29sb3I9InJlZCIpKSArDQogIGdlb21fcG9pbnQoYWVzKHg9RGF0ZSwgeT1zaGFyZXMsIGNvbG9yPSAiYmx1ZSIpKSArDQogIGdndGl0bGUoInNoYXJlcyIpICsNCiAgeWxhYigidG90YWwgc2hhcmVzIikNCmBgYA0KDQpgYGB7cn0NCnRvdGFsX2Rpc2xpa2VzIDwtDQogIHlvdXR1YmUgJT4lIA0KICBzZWxlY3QoRGF0ZSwgZGlzbGlrZXMpIA0KDQpnZ3Bsb3QodG90YWxfZGlzbGlrZXMpICsNCiAgZ2VvbV9saW5lKGFlcyh4PURhdGUsIHk9IGRpc2xpa2VzLCBjb2xvcj0icmVkIikpICsNCiAgZ2VvbV9wb2ludChhZXMoeD1EYXRlLCB5PSBkaXNsaWtlcywgY29sb3I9ImJsdWUiKSkgKw0KICBnZ3RpdGxlKCJkaXNsaWtlcyIpICsNCiAgeWxhYigidG90YWwgZGlzbGlrZXMiKQ0KICANCmBgYA0KDQpgYGB7cn0NCnRvdGFsX2NvbW1lbnRzX2FkZGVkIDwtDQogIHlvdXR1YmUgJT4lIA0KICBzZWxlY3QoRGF0ZSwgY29tbWVudHNfYWRkZWQpDQoNCg0KZ2dwbG90KHRvdGFsX2NvbW1lbnRzX2FkZGVkKSArDQogIGdlb21fbGluZShhZXMoeD1EYXRlLCB5PWNvbW1lbnRzX2FkZGVkLCBjb2xvcj0icmVkIikpICsNCiAgZ2VvbV9wb2ludChhZXMoeD1EYXRlLCB5PWNvbW1lbnRzX2FkZGVkLCBjb2xvcj0iYmx1ZSIpKSArDQogIGdndGl0bGUoImNvbW1lbnRzIGFkZGVkIikgKw0KICB5bGFiKCJ0b3RhbCBjb21tZW50cyBhZGRlZCIpDQpgYGANCg0KIyBsaW5rZWRpbg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KdG90YWxfdmlldyA8LQ0KICBsaW5rZWRpbmQgJT4lICANCiAgc2VsZWN0KGRhdGUsIE92ZXJhbGxfcGFnZV92aWV3c190b3RhbCkNCg0KZ2dwbG90KHRvdGFsX3ZpZXcpICsNCiAgZ2VvbV9wb2ludChhZXMoeD1kYXRlLCB5PU92ZXJhbGxfcGFnZV92aWV3c190b3RhbCwgY29sb3I9ICJibHVlIikpICsNCiAgZ2VvbV9saW5lKGFlcyh4PWRhdGUsIHk9T3ZlcmFsbF9wYWdlX3ZpZXdzX3RvdGFsLCBjb2xvcj0icmVkIikpICsNCiAgZ2d0aXRsZSgiT3ZlcmFsIHBhZ2Ugdmlld3MgdG90YWwiKSArDQogIHlsYWIoInRvdGFsIHZpZXciKQ0KYGBgDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQp0b3RhbF92aXNpdG9ycyA8LQ0KICBsaW5rZWRpbmQgJT4lIA0KICBzZWxlY3QoZGF0ZSwgT3ZlcmFsbF9wYWdlX3VuaXF1ZV92aXNpdG9yc190b3RhbCkgDQpnZ3Bsb3QodG90YWxfdmlzaXRvcnMpICsNCiAgZ2VvbV9wb2ludChhZXMoeD1kYXRlLCB5PU92ZXJhbGxfcGFnZV91bmlxdWVfdmlzaXRvcnNfdG90YWwsIGNvbG9yPSAiYmx1ZSIpKSsNCiAgZ2VvbV9saW5lKGFlcyh4PWRhdGUsIHk9T3ZlcmFsbF9wYWdlX3VuaXF1ZV92aXNpdG9yc190b3RhbCwgY29sb3I9InJlZCIpKSArDQogIGdndGl0bGUoIk92ZXJhbGwgcGFnZSB1bmlxdWUgdmlzaXRvcnMgdG90YWwiKSArDQogIHlsYWIoInRvdGFsIHZpc2l0b3JzIikNCg0KDQpgYGANCg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcGFnZV92aWV3cyA8LQ0KICBsaW5rZWRpbmQgJT4lIA0KICBzZWxlY3QoZGF0ZSwgVG90YWxfUGFnZV9WaWV3c19Ub3RhbCkNCiAgDQpnZ3Bsb3QocGFnZV92aWV3cykgKw0KICBnZW9tX3BvaW50KGFlcyh4PWRhdGUsIHk9VG90YWxfUGFnZV9WaWV3c19Ub3RhbCxjb2xvcj0gImJsdWUiKSkgKw0KICBnZW9tX2xpbmUoYWVzKHg9ZGF0ZSwgeT1Ub3RhbF9QYWdlX1ZpZXdzX1RvdGFsLCBjb2xvcj0gInJlZCIpKSArDQogIGdndGl0bGUoIlBhZ2UgVmlld3MgVG90YWwiKSArDQogIHlsYWIoInBhZ2Ugdmlld3MiKQ0KYGBgDQoNCg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KdG90YWxfZm9sbG93ZXJzIDwtDQogIGxpbmtlZGluZCAlPiUgDQogIHNlbGVjdChkYXRlLCBmb2xsb3dlcnMpDQogIA0KZ2dwbG90KHRvdGFsX2ZvbGxvd2VycykgKw0KICBnZW9tX3BvaW50KGFlcyh4PWRhdGUsIHk9Zm9sbG93ZXJzLCBjb2xvcj0gImJsdWUiKSkgKw0KICBnZW9tX2xpbmUoYWVzKHg9ZGF0ZSwgeT1mb2xsb3dlcnMsY29sb3I9ICJyZWQiICkpICsNCiAgZ2d0aXRsZSgidG90YWwgZm9sbG93ZXJzIikgKw0KICB5bGFiKCJmb2xsb3dlcnMiKQ0KDQpgYGANCg0KYGBge3J9DQp0b3RhbF9pbXByZXNzaW9ucyA8LQ0KICBsaW5rZWRpbmQgJT4lIA0KICBzZWxlY3QoZGF0ZSwgaW1wcmVzc2lvbnMpDQoNCg0KZ2dwbG90KHRvdGFsX2ltcHJlc3Npb25zKSArDQogIGdlb21fbGluZShhZXMoeD0gZGF0ZSwgeT0gaW1wcmVzc2lvbnMsIGNvbG9yPSJyZWQiKSkgKw0KICBnZW9tX3BvaW50KGFlcyh4PSBkYXRlLCB5PSBpbXByZXNzaW9ucywgY29sb3I9ImJsdWUiKSkgKw0KICBnZ3RpdGxlKCJ0b3RhbCBpbXByZXNzaW9ucyIpICsNCiAgeWxhYigiaW1wcmVzc2lvbnMiKQ0KICANCmBgYA0KDQoNCg0KDQoNCmBgYA0KDQoNCg0KDQo=