Nessa analise iremos utilizar os dados disponíveis pela IMDB Ratings for TV/Streaming Series tendo como ponto inicial o repositório visto aqui. Os dados dispoem as seguintes informações:
- series_name - Self explanatory
- series_ep - Episode index in the series from 1 onwards.
- season - From 1 onwards
- season_ep - Episode index in the season
- url - IMDB url for the episode (eg“http://www.imdb.com/title/tt5174246/”)
- Episode - Episode title
- UserRating - IMDB User Rating calculated as explained in theirsite.
- UserVotes - Num of votes for the rating
- r1 - Proportion of users who rated this episode with score 1
- …
- r10 - Proportion of userswho rated this episode with score 10
all_series = read_csv(here("data/series_from_imdb.csv.zip"),
col_types = "ccdcdcdddddddddddd")
Pergunta1: Com relação aos episodos da serie Flash, como se da o comportamento das avaliaçoes de cada episodio de acordo com as 5 temporadas?
serie_flash = all_series %>%
filter(series_name == "Flash")
serie_flash %>%
ggplot(aes(x = series_ep, y =UserRating, color = season)) +
geom_point()+
labs(title = "Comportamento da avaliação de cada episodio por temporada",
y = "Avaliação do Episodio",
x = "Numero do Episodio")

Primeira observação possivel de evidenciar é que possivelmente a 4 temporada é a que possui valores mais baixos em relaçoes as outras. Ela possui varios valores abaixo de 7, que relata uma avaliação bem ruim. Já a 3 temporada, possui apenas um episodio abaixo de 7. Fora esses valores extremos, conseguimos ver que o comportamento está bem proximo de 8.
serie_flash %>%
ggplot(aes(y = "", x = UserRating, color = season)) +
geom_jitter(alpha = .8)+
facet_wrap(~season, ncol = 1) +
stat_summary(fun = mean, color="black") +
labs(
y = "season",
x = "rating",
title="Média dos ratings por temporada de flash juntamente com o rating dos episodios"
)

Aqui podemos ver o real valor das medias de cada temporada.
media = serie_flash %>%
group_by(season) %>%
summarise(media_season = mean(UserRating))
media
2 pergunta: Com relação as series Naruto e Naruto Shippuden, Qual o comportamento dos votos dos usuários entre essas duas séries?
serie_narutos = all_series %>%
filter(series_name %in% c("Naruto", "Naruto Shippuden"), season == 1)
serie_narutos %>%
ggplot(aes(UserVotes, color = series_name)) +
geom_density()+
labs(
x = "votos",
title="Grafico de densidade dos votos dos episodios de naruto"
)

É visto que no naruto shippuden existe um pico de quantidade de votos proximos ao 100 e uma cauda longa a direita, evidenciando que o publico que o assiste manteve uma faixa de votação em valores pequenos e poucos votaram muito em determinados episodios.
Já em Naruto, existe 2 picos, um proximo de 100, e outro na faixa de 190 que mostram que seu publico é mais atuante na votação em comparação com o naruto shippuden, contendo também uma cauda da direita
serie_narutos %>%
group_by(series_name) %>%
summarise(percentil_95=quantile(UserVotes,.95),
mediana=quantile(UserVotes,.5),
media=mean(UserVotes))
Complementando a interpretação que fizemos acima entre as series, podemos afirmar , segundo esses resultados, 95 % dos votos dos episodios de naruto estão até aproximadamente 250, enquanto em naruto shippuden vai até aprox 170. Essa diferença também é percebivel através da media e mediana, sendo maiores em naruto, do que naruto shippuden.
3 pergunta: Em relação a serie de “Eu, a Patroa e as Crianças”, com quw se comporta a relação entre o inicio da temporada e o final? Sera que o final é mais bem avaliado que o começo?
Observação: Metade_ep = TRUE significa o inicio da temporada( inicio até o meio) enquanto Metade_ep = FALSE significa o final da temporada(meio até o final)
eu_patroa_criancas = all_series %>%
filter(series_name== "Eu, a Patroa e as Crianças") %>%
group_by(season) %>%
mutate(metade_ep = season_ep < mean(season_ep))
eu_patroa_criancas %>%
ggplot(aes(x=metade_ep, y = UserRating, color = metade_ep)) +
geom_jitter(alpha = 0.5, width = .2) +
facet_grid(~season)+
labs(
title = "Distribuição dos ratings da metade de\numa season X ratings da outra metade",
y = "Valor do Rating",
x = ""
)

metade_menor = eu_patroa_criancas %>%
group_by(season) %>%
filter(metade_ep == TRUE) %>%
summarise(mean = mean(UserRating),
metade_menor = metade_ep,
.groups = "drop")
metade_maior = eu_patroa_criancas %>%
group_by(season) %>%
filter(metade_ep == FALSE) %>%
summarise(mean = mean(UserRating),
metade_menor = metade_ep,
.groups = "drop")
metade_menor %>%
ggplot(aes(x = "", y = mean, color = metade_menor)) +
geom_point() +
geom_point(data = metade_maior) +
facet_grid(~season)+
labs(
title = "Comparação da média dos ratings da metade de\numa season x média dos ratings da outra metade",
y = "Média dos ratings das temporadas",
x = "Temporada"
)

Podemos afirmar que em 4 das 5 temporadas, o rating , em media, foi maior no inicio da temporada em comparação com a final. É visto que a diferença entre as medias fica na faixa de 0.1 pontos. Porem, na temporada 4, o final da temporada recebeu uma classificaçao melhor que a do inicio da temporada. Temos a existencia de um valor extremo muito bem avaliado que acabou por aumentar a media para o conjunto de episodios do final da temporada. A diferença ficou na faixa de 0.01 pontos.
Pergunta 4 Em relação a serie “One Piece: Wan pîsu”, qual a relação entre avaliação do episodio com a proporção dos usuarios que votaram 10?
one_piece = all_series %>%
filter(series_name == "One Piece: Wan pîsu")
one_piece %>%
ggplot(aes(y=r10, x = UserRating)) +
geom_point()+
labs(
x="Avaliação do Episodio",
y = "Proporção de usuarios que votaram 10",
title= "Correlação entre avaliação do episodio X Proporção do usuarios que votaram 10")

one_piece %>%
summarise(pearson = cor(y=r10, x = UserRating,method="pearson"),
spearman = cor(y=r10, x = UserRating,method="spearman"),
kendall = cor(y=r10, x = UserRating,method="kendall"))
É visto que o coeficiente de peason possui uma correlação positiva moderada entre os dois valores, afimando que ao aumentar o valor da avaliação do episodio, maior pode ser o valor da proporção de usuarios que votaram 10. Não parece ter uma relação linear, mais se aproximando de uma curva crescente. Também existem pontos extremos.
LS0tCnRpdGxlOiAiTDJQMSAtIFRoaWFnbyBZdXJpIDExNzIxMTE1NiBlIElnb3IgUGVyZWlyYSAxMTcyMTA2OTMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCmVkaXRvcl9vcHRpb25zOiAKICBtYXJrZG93bjogCiAgICB3cmFwOiA3MgotLS0KCmBgYHtyIHNldHVwLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShoZXJlKQp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgpOZXNzYSBhbmFsaXNlIGlyZW1vcyB1dGlsaXphciBvcyBkYWRvcyBkaXNwb27DrXZlaXMgcGVsYSBJTURCIFJhdGluZ3MgZm9yClRWL1N0cmVhbWluZyBTZXJpZXMgdGVuZG8gY29tbyBwb250byBpbmljaWFsIG8gcmVwb3NpdMOzcmlvIHZpc3RvClthcXVpXShodHRwczovL2dpdGh1Yi5jb20vY2llbmNpYWRlZGFkb3MtdWZjZy9lZGEtc2VyaWVzKS4gT3MgZGFkb3MKZGlzcG9lbSBhcyBzZWd1aW50ZXMgaW5mb3JtYcOnw7VlczogCgotIHNlcmllc19uYW1lIDxjaHI+LSAgU2VsZiBleHBsYW5hdG9yeQotIHNlcmllc19lcCA8aW50Pi0gIEVwaXNvZGUgaW5kZXggaW4gdGhlIHNlcmllcyBmcm9tIDEgb253YXJkcy4KLSBzZWFzb24gPGludD4tICBGcm9tIDEgb253YXJkcwotIHNlYXNvbl9lcCA8aW50Pi0gIEVwaXNvZGUgaW5kZXggaW4gdGhlIHNlYXNvbiAKLSB1cmwgPGNocj4tICBJTURCIHVybCBmb3IgdGhlIGVwaXNvZGUgKGVnIjxodHRwOi8vd3d3LmltZGIuY29tL3RpdGxlL3R0NTE3NDI0Ni8+IikgCi0gRXBpc29kZSA8Y2hyPi0gIEVwaXNvZGUgdGl0bGUgCi0gVXNlclJhdGluZyA8ZGJsPi0gIElNREIgVXNlciBSYXRpbmcgY2FsY3VsYXRlZCBbYXMgZXhwbGFpbmVkIGluIHRoZWlyc2l0ZV0oaHR0cDovL3d3dy5pbWRiLmNvbS9oZWxwL3Nob3dfbGVhZj92b3Rlc3RvcGZhcSkuIAotIFVzZXJWb3RlcyA8ZGJsPi0gIE51bSBvZiB2b3RlcyBmb3IgdGhlIHJhdGluZyAKLSByMSA8ZGJsPi0gIFByb3BvcnRpb24gb2YgdXNlcnMgd2hvIHJhdGVkIHRoaXMgZXBpc29kZSB3aXRoIHNjb3JlIDEgCi0gLi4uIAotIHIxMCA8ZGJsPi0gIFByb3BvcnRpb24gb2YgdXNlcnN3aG8gcmF0ZWQgdGhpcyBlcGlzb2RlIHdpdGggc2NvcmUgMTAKCmBgYHtyfQphbGxfc2VyaWVzID0gcmVhZF9jc3YoaGVyZSgiZGF0YS9zZXJpZXNfZnJvbV9pbWRiLmNzdi56aXAiKSwgCiAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSAiY2NkY2RjZGRkZGRkZGRkZGRkIikKCmBgYAoKKlBlcmd1bnRhMToqCkNvbSByZWxhw6fDo28gYW9zIGVwaXNvZG9zIGRhIHNlcmllIEZsYXNoLCBjb21vIHNlIGRhIG8KY29tcG9ydGFtZW50byBkYXMgYXZhbGlhw6dvZXMgZGUgY2FkYSBlcGlzb2RpbyBkZSBhY29yZG8gY29tIGFzIDUKdGVtcG9yYWRhcz8KCmBgYHtyfQpzZXJpZV9mbGFzaCA9IGFsbF9zZXJpZXMgJT4lIAogIGZpbHRlcihzZXJpZXNfbmFtZSA9PSAiRmxhc2giKQoKc2VyaWVfZmxhc2ggJT4lIAogIGdncGxvdChhZXMoeCA9IHNlcmllc19lcCwgeSA9VXNlclJhdGluZywgY29sb3IgPSBzZWFzb24pKSArCiAgZ2VvbV9wb2ludCgpKwogIGxhYnModGl0bGUgPSAiQ29tcG9ydGFtZW50byBkYSBhdmFsaWHDp8OjbyBkZSBjYWRhIGVwaXNvZGlvIHBvciB0ZW1wb3JhZGEiLAogICAgICB5ID0gIkF2YWxpYcOnw6NvIGRvIEVwaXNvZGlvIiwKICAgICAgeCA9ICJOdW1lcm8gZG8gRXBpc29kaW8iKQpgYGAKClByaW1laXJhIG9ic2VydmHDp8OjbyBwb3NzaXZlbCBkZSBldmlkZW5jaWFyIMOpIHF1ZSBwb3NzaXZlbG1lbnRlIGEgNAp0ZW1wb3JhZGEgw6kgYSBxdWUgcG9zc3VpIHZhbG9yZXMgbWFpcyBiYWl4b3MgZW0gcmVsYcOnb2VzIGFzIG91dHJhcy4gRWxhCnBvc3N1aSB2YXJpb3MgdmFsb3JlcyBhYmFpeG8gZGUgNywgcXVlIHJlbGF0YSB1bWEgYXZhbGlhw6fDo28gYmVtIHJ1aW0uIErDoQphIDMgdGVtcG9yYWRhLCBwb3NzdWkgYXBlbmFzIHVtIGVwaXNvZGlvIGFiYWl4byBkZSA3LiBGb3JhIGVzc2VzIHZhbG9yZXMKZXh0cmVtb3MsIGNvbnNlZ3VpbW9zIHZlciBxdWUgbyBjb21wb3J0YW1lbnRvIGVzdMOhIGJlbSBwcm94aW1vIGRlIDguCgpgYGB7ciB3YXJuaW5nPUZBTFNFfQpzZXJpZV9mbGFzaCAlPiUKICBnZ3Bsb3QoYWVzKHkgPSAiIiwgeCA9IFVzZXJSYXRpbmcsIGNvbG9yID0gc2Vhc29uKSkgKwogIGdlb21faml0dGVyKGFscGhhID0gLjgpKwogIGZhY2V0X3dyYXAofnNlYXNvbiwgbmNvbCA9IDEpICsKICBzdGF0X3N1bW1hcnkoZnVuID0gbWVhbiwgY29sb3I9ImJsYWNrIikgKyAKICBsYWJzKAogICAgeSA9ICJzZWFzb24iLAogICAgeCA9ICJyYXRpbmciLAogICAgdGl0bGU9Ik3DqWRpYSBkb3MgcmF0aW5ncyBwb3IgdGVtcG9yYWRhIGRlIGZsYXNoIGp1bnRhbWVudGUgY29tIG8gcmF0aW5nIGRvcyBlcGlzb2Rpb3MiCiAgKQpgYGAKCkFxdWkgcG9kZW1vcyB2ZXIgbyByZWFsIHZhbG9yIGRhcyBtZWRpYXMgZGUgY2FkYSB0ZW1wb3JhZGEuCgpgYGB7cn0KbWVkaWEgPSBzZXJpZV9mbGFzaCAlPiUgCiAgZ3JvdXBfYnkoc2Vhc29uKSAlPiUgCiAgc3VtbWFyaXNlKG1lZGlhX3NlYXNvbiA9IG1lYW4oVXNlclJhdGluZykpCm1lZGlhCmBgYAoKKjIgcGVyZ3VudGE6KiBDb20gcmVsYcOnw6NvIGFzIHNlcmllcyBOYXJ1dG8gZSBOYXJ1dG8gU2hpcHB1ZGVuLCBRdWFsIG8KY29tcG9ydGFtZW50byBkb3Mgdm90b3MgZG9zIHVzdcOhcmlvcyBlbnRyZSBlc3NhcyBkdWFzIHPDqXJpZXM/CgpgYGB7cn0Kc2VyaWVfbmFydXRvcyA9IGFsbF9zZXJpZXMgJT4lIAogIGZpbHRlcihzZXJpZXNfbmFtZSAlaW4lIGMoIk5hcnV0byIsICJOYXJ1dG8gU2hpcHB1ZGVuIiksIHNlYXNvbiA9PSAxKQoKc2VyaWVfbmFydXRvcyAlPiUgCiAgZ2dwbG90KGFlcyhVc2VyVm90ZXMsIGNvbG9yID0gc2VyaWVzX25hbWUpKSArCiAgZ2VvbV9kZW5zaXR5KCkrCiAgbGFicygKICAgIHggPSAidm90b3MiLAogICAgdGl0bGU9IkdyYWZpY28gZGUgZGVuc2lkYWRlIGRvcyB2b3RvcyBkb3MgZXBpc29kaW9zIGRlIG5hcnV0byIKICApCmBgYAoKw4kgdmlzdG8gcXVlIG5vIG5hcnV0byBzaGlwcHVkZW4gZXhpc3RlIHVtIHBpY28gZGUgcXVhbnRpZGFkZSBkZSB2b3Rvcwpwcm94aW1vcyBhbyAxMDAgZSB1bWEgY2F1ZGEgbG9uZ2EgYSBkaXJlaXRhLCBldmlkZW5jaWFuZG8gcXVlIG8gcHVibGljbwpxdWUgbyBhc3Npc3RlIG1hbnRldmUgdW1hIGZhaXhhIGRlIHZvdGHDp8OjbyBlbSB2YWxvcmVzIHBlcXVlbm9zIGUgcG91Y29zCnZvdGFyYW0gbXVpdG8gZW0gZGV0ZXJtaW5hZG9zIGVwaXNvZGlvcy4KCkrDoSBlbSBOYXJ1dG8sIGV4aXN0ZSAyIHBpY29zLCB1bSBwcm94aW1vIGRlIDEwMCwgZSBvdXRybyBuYSBmYWl4YSBkZSAxOTAKcXVlIG1vc3RyYW0gcXVlIHNldSBwdWJsaWNvIMOpIG1haXMgYXR1YW50ZSBuYSB2b3Rhw6fDo28gZW0gY29tcGFyYcOnw6NvIGNvbQpvIG5hcnV0byBzaGlwcHVkZW4sIGNvbnRlbmRvIHRhbWLDqW0gdW1hIGNhdWRhIGRhIGRpcmVpdGEKCmBgYHtyfQpzZXJpZV9uYXJ1dG9zICU+JSAKICBncm91cF9ieShzZXJpZXNfbmFtZSkgJT4lIAogIHN1bW1hcmlzZShwZXJjZW50aWxfOTU9cXVhbnRpbGUoVXNlclZvdGVzLC45NSksCiAgICAgICAgICAgIG1lZGlhbmE9cXVhbnRpbGUoVXNlclZvdGVzLC41KSwKICAgICAgICAgICAgbWVkaWE9bWVhbihVc2VyVm90ZXMpKQpgYGAKCkNvbXBsZW1lbnRhbmRvIGEgaW50ZXJwcmV0YcOnw6NvIHF1ZSBmaXplbW9zIGFjaW1hIGVudHJlIGFzIHNlcmllcywKcG9kZW1vcyBhZmlybWFyICwgc2VndW5kbyBlc3NlcyByZXN1bHRhZG9zLCA5NSAlIGRvcyB2b3RvcyBkb3MgZXBpc29kaW9zCmRlIG5hcnV0byBlc3TDo28gYXTDqSBhcHJveGltYWRhbWVudGUgMjUwLCBlbnF1YW50byBlbSBuYXJ1dG8gc2hpcHB1ZGVuCnZhaSBhdMOpIGFwcm94IDE3MC4gRXNzYSBkaWZlcmVuw6dhIHRhbWLDqW0gw6kgcGVyY2ViaXZlbCBhdHJhdsOpcyBkYSBtZWRpYSBlCm1lZGlhbmEsIHNlbmRvIG1haW9yZXMgZW0gbmFydXRvLCBkbyBxdWUgbmFydXRvIHNoaXBwdWRlbi4KCiozIHBlcmd1bnRhOiogCkVtIHJlbGHDp8OjbyBhIHNlcmllIGRlICJFdSwgYSBQYXRyb2EgZSBhcyBDcmlhbsOnYXMiLCBjb20gcXV3CnNlIGNvbXBvcnRhIGEgcmVsYcOnw6NvIGVudHJlIG8gaW5pY2lvIGRhIHRlbXBvcmFkYSBlIG8gZmluYWw/IFNlcmEgcXVlIG8KZmluYWwgw6kgbWFpcyBiZW0gYXZhbGlhZG8gcXVlIG8gY29tZcOnbz8KCk9ic2VydmHDp8OjbzogTWV0YWRlX2VwID0gVFJVRSBzaWduaWZpY2EgbyBpbmljaW8gZGEgdGVtcG9yYWRhKCBpbmljaW8gYXTDqQpvIG1laW8pIGVucXVhbnRvIE1ldGFkZV9lcCA9IEZBTFNFIHNpZ25pZmljYSBvIGZpbmFsIGRhIHRlbXBvcmFkYShtZWlvCmF0w6kgbyBmaW5hbCkKCmBgYHtyfQpldV9wYXRyb2FfY3JpYW5jYXMgPSBhbGxfc2VyaWVzICU+JQogIGZpbHRlcihzZXJpZXNfbmFtZT09ICJFdSwgYSBQYXRyb2EgZSBhcyBDcmlhbsOnYXMiKSAlPiUKICBncm91cF9ieShzZWFzb24pICU+JQogIG11dGF0ZShtZXRhZGVfZXAgPSBzZWFzb25fZXAgPCBtZWFuKHNlYXNvbl9lcCkpCgpldV9wYXRyb2FfY3JpYW5jYXMgJT4lCiAgZ2dwbG90KGFlcyh4PW1ldGFkZV9lcCwgeSA9IFVzZXJSYXRpbmcsIGNvbG9yID0gbWV0YWRlX2VwKSkgKwogIGdlb21faml0dGVyKGFscGhhID0gMC41LCB3aWR0aCA9IC4yKSArCiAgZmFjZXRfZ3JpZCh+c2Vhc29uKSsKICBsYWJzKAogICAgdGl0bGUgPSAiRGlzdHJpYnVpw6fDo28gZG9zIHJhdGluZ3MgZGEgbWV0YWRlIGRlXG51bWEgc2Vhc29uIFggcmF0aW5ncyBkYSBvdXRyYSBtZXRhZGUiLAogICAgeSA9ICJWYWxvciBkbyBSYXRpbmciLAogICAgeCA9ICIiCiAgKQpgYGAKCmBgYHtyfQptZXRhZGVfbWVub3IgPSBldV9wYXRyb2FfY3JpYW5jYXMgJT4lCiAgZ3JvdXBfYnkoc2Vhc29uKSAlPiUKICBmaWx0ZXIobWV0YWRlX2VwID09IFRSVUUpICU+JQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihVc2VyUmF0aW5nKSwKICAgICAgICAgICAgbWV0YWRlX21lbm9yID0gbWV0YWRlX2VwLAogICAgICAgICAgICAuZ3JvdXBzID0gImRyb3AiKQoKbWV0YWRlX21haW9yID0gZXVfcGF0cm9hX2NyaWFuY2FzICU+JQogIGdyb3VwX2J5KHNlYXNvbikgJT4lCiAgZmlsdGVyKG1ldGFkZV9lcCA9PSBGQUxTRSkgJT4lCiAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKFVzZXJSYXRpbmcpLAogICAgICAgICAgICBtZXRhZGVfbWVub3IgPSBtZXRhZGVfZXAsCiAgICAgICAgICAgIC5ncm91cHMgPSAiZHJvcCIpCgoKbWV0YWRlX21lbm9yICU+JQogIGdncGxvdChhZXMoeCA9ICIiLCB5ID0gbWVhbiwgY29sb3IgPSBtZXRhZGVfbWVub3IpKSArCiAgZ2VvbV9wb2ludCgpICsgCiAgZ2VvbV9wb2ludChkYXRhID0gbWV0YWRlX21haW9yKSArCiAgZmFjZXRfZ3JpZCh+c2Vhc29uKSsKICBsYWJzKAogICAgdGl0bGUgPSAiQ29tcGFyYcOnw6NvIGRhIG3DqWRpYSBkb3MgcmF0aW5ncyBkYSBtZXRhZGUgZGVcbnVtYSBzZWFzb24geCBtw6lkaWEgZG9zIHJhdGluZ3MgZGEgb3V0cmEgbWV0YWRlIiwKICAgIHkgPSAiTcOpZGlhIGRvcyByYXRpbmdzIGRhcyB0ZW1wb3JhZGFzIiwKICAgIHggPSAiVGVtcG9yYWRhIgogICkKYGBgCgpQb2RlbW9zIGFmaXJtYXIgcXVlIGVtIDQgZGFzIDUgdGVtcG9yYWRhcywgbyByYXRpbmcgLCBlbSBtZWRpYSwgZm9pCm1haW9yIG5vIGluaWNpbyBkYSB0ZW1wb3JhZGEgZW0gY29tcGFyYcOnw6NvIGNvbSBhIGZpbmFsLiDDiSB2aXN0byBxdWUgYQpkaWZlcmVuw6dhIGVudHJlIGFzIG1lZGlhcyBmaWNhIG5hIGZhaXhhIGRlIDAuMSBwb250b3MuIFBvcmVtLCBuYQp0ZW1wb3JhZGEgNCwgbyBmaW5hbCBkYSB0ZW1wb3JhZGEgcmVjZWJldSB1bWEgY2xhc3NpZmljYcOnYW8gbWVsaG9yIHF1ZSBhCmRvIGluaWNpbyBkYSB0ZW1wb3JhZGEuIFRlbW9zIGEgZXhpc3RlbmNpYSBkZSB1bSB2YWxvciBleHRyZW1vIG11aXRvIGJlbQphdmFsaWFkbyBxdWUgYWNhYm91IHBvciBhdW1lbnRhciBhIG1lZGlhIHBhcmEgbyBjb25qdW50byBkZSBlcGlzb2Rpb3MgZG8KZmluYWwgZGEgdGVtcG9yYWRhLiBBIGRpZmVyZW7Dp2EgZmljb3UgbmEgZmFpeGEgZGUgMC4wMSBwb250b3MuCgoKKlBlcmd1bnRhIDQqIEVtIHJlbGHDp8OjbyBhIHNlcmllICJPbmUgUGllY2U6IFdhbiBww65zdSIsIHF1YWwgYSByZWxhw6fDo28KZW50cmUgYXZhbGlhw6fDo28gZG8gZXBpc29kaW8gY29tIGEgcHJvcG9yw6fDo28gZG9zIHVzdWFyaW9zIHF1ZSB2b3RhcmFtIDEwPwoKYGBge3J9Cm9uZV9waWVjZSA9IGFsbF9zZXJpZXMgJT4lCiAgZmlsdGVyKHNlcmllc19uYW1lID09ICJPbmUgUGllY2U6IFdhbiBww65zdSIpIAoKb25lX3BpZWNlICU+JSAKICBnZ3Bsb3QoYWVzKHk9cjEwLCB4ID0gVXNlclJhdGluZykpICsKICBnZW9tX3BvaW50KCkrCiAgbGFicygKICAgIHg9IkF2YWxpYcOnw6NvIGRvIEVwaXNvZGlvIiwKICAgIHkgPSAiUHJvcG9yw6fDo28gZGUgdXN1YXJpb3MgcXVlIHZvdGFyYW0gMTAiLAogICAgdGl0bGU9ICJDb3JyZWxhw6fDo28gZW50cmUgYXZhbGlhw6fDo28gZG8gZXBpc29kaW8gWCBQcm9wb3LDp8OjbyBkbyB1c3VhcmlvcyBxdWUgdm90YXJhbSAxMCIpCmBgYAoKYGBge3J9Cm9uZV9waWVjZSAlPiUgCiAgc3VtbWFyaXNlKHBlYXJzb24gPSBjb3IoeT1yMTAsIHggPSBVc2VyUmF0aW5nLG1ldGhvZD0icGVhcnNvbiIpLAogICAgICAgICAgICBzcGVhcm1hbiA9IGNvcih5PXIxMCwgeCA9IFVzZXJSYXRpbmcsbWV0aG9kPSJzcGVhcm1hbiIpLAogICAgICAgICAgICBrZW5kYWxsID0gY29yKHk9cjEwLCB4ID0gVXNlclJhdGluZyxtZXRob2Q9ImtlbmRhbGwiKSkKYGBgCgrDiSB2aXN0byBxdWUgbyBjb2VmaWNpZW50ZSBkZSBwZWFzb24gcG9zc3VpIHVtYSBjb3JyZWxhw6fDo28gcG9zaXRpdmEKbW9kZXJhZGEgZW50cmUgb3MgZG9pcyB2YWxvcmVzLCBhZmltYW5kbyBxdWUgYW8gYXVtZW50YXIgbyB2YWxvciBkYQphdmFsaWHDp8OjbyBkbyBlcGlzb2RpbywgbWFpb3IgcG9kZSBzZXIgbyB2YWxvciBkYSBwcm9wb3LDp8OjbyBkZSB1c3VhcmlvcwpxdWUgdm90YXJhbSAxMC4gTsOjbyBwYXJlY2UgdGVyIHVtYSByZWxhw6fDo28gbGluZWFyLCBtYWlzIHNlIGFwcm94aW1hbmRvCmRlIHVtYSBjdXJ2YSBjcmVzY2VudGUuIFRhbWLDqW0gZXhpc3RlbSBwb250b3MgZXh0cmVtb3MuCg==