Introdução

Neste relatório, serão analisados as avaliações dos episódios e das temporadas de três séries de TV: Friends, Desperate Housewives e House. As perguntas as serem respondidas incluem qual das séries é mais bem avaliada, qual possui episódios de qualidade mais irregular, qual das séries ou temporadas tem episódios mais sem graça e o que tende a ser melhor: inícios ou finais de séries/temporadas.

Importando os dados

O primeiro passo desta análise é importar os dados a serem utilizados e filtrar as séries de interesse.

episodes = read_csv(here("data/series_from_imdb.csv"), 
                    progress = FALSE,
                    col_types = cols(.default = col_double(), 
                                     series_name = col_character(), 
                                     episode = col_character(), 
                                     url = col_character(),
                                     season = col_character())) %>% 
    filter(series_name %in% c("Friends", "Desperate Housewives", "House"))
Error in read_csv(here("data/series_from_imdb.csv"), progress = FALSE,  : 
  não foi possível encontrar a função "%>%"

Perguntas

Qual das séries é mais bem avaliada no IMDB? A diferença é grande? Pequena? Muda de acordo com as temporadas da série?

O critério para escolha da série mais bem avaliada foi escolhido de acordo com a média do valor da proporção de usuários que votaram nota máxima em cada episódio.

No gráfico é possível visualizar a relação entre as temporadas das séries e a média do valor da proporção de usuários que votaram nota máxima em cada episódio no decorrer das temporadas. A série mais bem votada é Friends, possuindo mais notas máximas dentre as demais avaliações por episódio. Este seriado liderou as demais principalmente durante as temporadas 1 e 3, possuindo quase 35% das notas com valor máximo. Nota-se que, a partir da 3ª temporada, essa proporção diminuiu drasticamente, chegando a seu mínimo na 5ª temporada, com valor igual a 28%. Uma possível razão para essa queda seria o término do casal Rachel e Ross e o novo namoro de Ross com Emily. House ocupou a segunda posição do ranking, com avaliação crescete ao longo das temporadas e dominando as melhores avaliações durante 4 temporadas: 4ª, 5ª, 6ª a 7ª. Acredito que a queda na 8ª temporada se deva pelas alerta de spoiler mortes de personagens importantes da série. Desperate Housewives ficou em último lugar, possuindo avaliação crescente com exceção principalmente da 6ª temporada, que teve o valor mínimo entre todas as temporadas de todas as séries. Acredito que esta queda ocorreu devido ao mistério envolvendo o estrangulador de Fairview, além da catástrofe envolvendo a queda de um avião dentro do condomínio onde as principais personagens residem.

Qual das séries tem episódios de qualidade mais irregular segundo o IMDB? A diferença é grande? Pequena?

Os gráficos acima exibem a relação entre o episódio e a avaliação dada pelo usuários por temporada em cada uma das três séries. A série que possui maior variação de avaliação dos usuários é House, seguindo de Friends e Desperate Housewives. A diferença entre os episódios de House variam de 7.6 a 9.4, com a maior parte das avaliações entre 8.0 e 9.2. A avaliação dos episódios de Friends variam entre 7.5 e 9.5, possuindo maior concentração das notas entre 8.0 e 9.0. Desperate Housewives possui maior concentração de avaliações entre 7.7 e 8.2, possuindo episódios com notas mais regulares entre as três.

Qual das séries ou temporadas tem episódios mais sem graça? (Um episódio é sem graça se ninguém nem ama nem odeia ele)

Os episódios foram considerados sem graça de acordo com a proporção de votos iguais a 5 (considerados neutros) em relação ao número total de votos.

episodes =  episodes %>%
    mutate(
        rank_odiados = row_number(r1), # maior = mais odiado
        rank_amados = row_number(r10), # maior = mais amado
        rank_sem_graca = row_number(r5), # maior = mais sem graca,
        amado_odiado = rank_amados * rank_odiados) # maior = mais amado E odiado
episodes %>% group_by(series_name) %>%
    ggplot(aes(
        x = r5,
        y = season,
        color = series_name,
        label = season_ep,
        size = rank_sem_graca
    )) +
    geom_point(alpha = .5) +
    geom_text(nudge_x = .001, nudge_y = -.01) +
  labs(y = "Temporadas", x = "Proporção de votos neutros") +
  guides(color=guide_legend("Série"), size = guide_legend("Nível de chatice"))

Friends é a série que possui mais episódios sem graça, seguido por House e Desperate Housewives. Dentre as temporadas da série, as que possuem episódios mais sem graça são as temporadas 4 e 10. O episódio mais chato de todos os tempos de acordo com os votos dos usuários é S8E16 - The One Where Joey Tells Rachel, onde Joey conta para Rachel que está apaixonado por ela, provavelmente uma parcela das pessoas torciam pelo casal, enquanto a outra torcia por Rachel e Ross. O segundo episódio mais chato da série é S4E22 - The One with the Worst Best Man Ever, onde os três personagens masculinos discutem sobre quem será o padrinho de casamento dos outros e Joey acaba perdendo o anel de casamento. Esse episódio ser considerado o segundo mais chato me surpreendeu pois nele também ocorre o chá de bebê da Phoebe (que considero a personagem mais engraçada do seriado) e tem cenas bem engraçadas. O terceiro episódio mais chato é também da série Friends, o S10E12 - The One With Phoebe’s Wedding, onde Phoebe se casa, apesar de tudo dar errado o episódio quase todo, motivo que pode ter causado essa posição de chatice do episódio.

Episódios no início/fim da temporada são mais bem avaliados que os no meio? O que tende a ser melhor? Inícios ou finais de séries/temporadas?

episodes %>% group_by(series_name) %>%
  ggplot(aes(x = season_ep, y = user_rating, color = series_name)) +
  geom_jitter(width = .1, size = .5, alpha = .5) +
  geom_line() +
  labs(x = "Episódios", y = "Avaliação") +
  facet_wrap(~ season) +
  guides(color=guide_legend("Série"))

Pelo gráfico acima, pode-se observar que as melhores avaliações de uma temporada estão normalmente em seus episódios finais, com exceção de algumas temporadas: 3ª, 5ª e 7ª temporadas de Desperate Housewives e a 2ª e 5ª temporadas de Friends, que tiveram as melhores avaliações na metade de suas temporadas; 4ª remporada de House e 8ª de Friends tiveram as melhores avaliações em seus inícios de temporadas. As séries Friends e Desperate Housewives tiveram suas melhores avaliações de episódio nas temporadas finais. House teve melhores episódios no meio da série, nas temporadas 4, 5 e 6.

Qual o episódio mais detestado?

House lidera de longe os episódios mais odiados pelo IMDb. O episódio mais odiado é o S7E18 - The Dig e a razão só saberei quando terminar a série. (Estou na quinta temporada e postarei a minha opinião sobre o episódio assim que assisti-lo!). O episódio mais odiado de Friends também é o S8E16 - The One Where Joey Tells Rachel, o que Joey conta para Rachel que está apaixonado por ela. Coincidentemente, o episódio mais odiado de Desperate Housewives também possui a mesma numeração do episódio de Friends: S8E16 - You Take for Granted, onde Mike Delfino, um dos personagens principais e mais queridos (na minha opinião) morre, por um motivo banal e na calçada de casa. Este com certeza mereceu o título de mais odiado da série inteira.

E amado?

episodes %>% group_by(series_name) %>%
    ggplot(aes(
        x = r10,
        y = season,
        color = series_name,
        label = season_ep,
        size = rank_amados)) +
    geom_point(alpha = .5) +
    geom_text(nudge_x = .001, nudge_y = -.01) +
  labs(y = "Temporadas", x = "Proporção de votos amados") +
  guides(color=guide_legend("Série"), size = guide_legend("Nível de amor"))

Friends possui os episódios mais amados dentre as demais série, destacando-se três episódios da primeira temporada: S1E3 - The One With the Thumb, onde Phoebe vai ganhando mais dinheiro conforme vai fazendo boas ações, S1E4 - The One with George Stephanopoulos, em que os meninos levam Ross para sair e esquecer o aniversário de casamento com a ex esposa e S1E22 - The One with the Ick Factor, onde tem o namorado novo da Monica e Chandler descobrindo que ninguém do trabalho gosta dele.

LS0tCnRpdGxlOiAiQW7DoWxpc2Ugc29icmUgYXZhbGlhw6fDtWVzIGRlIHPDqXJpZXMgZGUgVFYgcGVsbyBJTURiIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCmBgYHtyIHNldHVwLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShoZXJlKQp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCiMjIEludHJvZHXDp8OjbwoKTmVzdGUgcmVsYXTDs3Jpbywgc2Vyw6NvIGFuYWxpc2Fkb3MgYXMgYXZhbGlhw6fDtWVzIGRvcyBlcGlzw7NkaW9zIGUgZGFzIHRlbXBvcmFkYXMgZGUgdHLDqnMgc8OpcmllcyBkZSBUVjogRnJpZW5kcywgRGVzcGVyYXRlIEhvdXNld2l2ZXMgZSBIb3VzZS4gQXMgcGVyZ3VudGFzIGFzIHNlcmVtIHJlc3BvbmRpZGFzIGluY2x1ZW0gcXVhbCBkYXMgc8OpcmllcyDDqSBtYWlzIGJlbSBhdmFsaWFkYSwgcXVhbCBwb3NzdWkgZXBpc8OzZGlvcyBkZSBxdWFsaWRhZGUgbWFpcyBpcnJlZ3VsYXIsIHF1YWwgZGFzIHPDqXJpZXMgb3UgdGVtcG9yYWRhcyB0ZW0gZXBpc8OzZGlvcyBtYWlzIHNlbSBncmHDp2EgZSBvIHF1ZSB0ZW5kZSBhIHNlciBtZWxob3I6IGluw61jaW9zIG91IGZpbmFpcyBkZSBzw6lyaWVzL3RlbXBvcmFkYXMuCgojIyMjIEltcG9ydGFuZG8gb3MgZGFkb3MKCk8gcHJpbWVpcm8gcGFzc28gZGVzdGEgYW7DoWxpc2Ugw6kgaW1wb3J0YXIgb3MgZGFkb3MgYSBzZXJlbSB1dGlsaXphZG9zIGUgZmlsdHJhciBhcyBzw6lyaWVzIGRlIGludGVyZXNzZS4KCmBgYHtyfQplcGlzb2RlcyA9IHJlYWRfY3N2KGhlcmUoImRhdGEvc2VyaWVzX2Zyb21faW1kYi5jc3YiKSwgCiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2RvdWJsZSgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc19uYW1lID0gY29sX2NoYXJhY3RlcigpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaXNvZGUgPSBjb2xfY2hhcmFjdGVyKCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gY29sX2NoYXJhY3RlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vhc29uID0gY29sX2NoYXJhY3RlcigpKSkgJT4lIAogICAgZmlsdGVyKHNlcmllc19uYW1lICVpbiUgYygiRnJpZW5kcyIsICJEZXNwZXJhdGUgSG91c2V3aXZlcyIsICJIb3VzZSIpKQpgYGAKCiMjIFBlcmd1bnRhcwoKIyMjIFF1YWwgZGFzIHPDqXJpZXMgw6kgbWFpcyBiZW0gYXZhbGlhZGEgbm8gSU1EQj8gQSBkaWZlcmVuw6dhIMOpIGdyYW5kZT8gUGVxdWVuYT8gTXVkYSBkZSBhY29yZG8gY29tIGFzIHRlbXBvcmFkYXMgZGEgc8OpcmllPyAKCiAgTyBjcml0w6lyaW8gcGFyYSBlc2NvbGhhIGRhIHPDqXJpZSBtYWlzIGJlbSBhdmFsaWFkYSBmb2kgZXNjb2xoaWRvIGRlIGFjb3JkbyBjb20gYSBtw6lkaWEgZG8gdmFsb3IgZGEgcHJvcG9yw6fDo28gZGUgdXN1w6FyaW9zIHF1ZSB2b3RhcmFtIG5vdGEgbcOheGltYSBlbSBjYWRhIGVwaXPDs2Rpby4KICAKYGBge3J9CmVwaXNvZGVzICU+JSBncm91cF9ieShzZXJpZXNfbmFtZSwgc2Vhc29uKSAlPiUgCiAgc3VtbWFyaXNlKG1lZGlhbl9ieV9zZXJpZSA9IG1lZGlhbihyMTApKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzZWFzb24sIHkgPSBtZWRpYW5fYnlfc2VyaWUgKjEwMCwgY29sb3IgPSBzZXJpZXNfbmFtZSwgZ3JvdXA9c2VyaWVzX25hbWUpKSArCiAgZ2VvbV9saW5lKHN0YXQ9J2lkZW50aXR5JykgKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh4ID0gIlRlbXBvcmFkYXMiLCB5ID0gIk3DqWRpYSBkZSBwcm9wb3LDp8OjbyBkZSBub3RhcyBtw6F4aW1hcyAoJSkiKSAgKwogIGd1aWRlcyhjb2xvcj1ndWlkZV9sZWdlbmQoIlPDqXJpZSIpKQpgYGAKICAKICBObyBncsOhZmljbyDDqSBwb3Nzw612ZWwgdmlzdWFsaXphciBhIHJlbGHDp8OjbyBlbnRyZSBhcyB0ZW1wb3JhZGFzIGRhcyBzw6lyaWVzIGUgYSBtw6lkaWEgZG8gdmFsb3IgZGEgcHJvcG9yw6fDo28gZGUgdXN1w6FyaW9zIHF1ZSB2b3RhcmFtIG5vdGEgbcOheGltYSBlbSBjYWRhIGVwaXPDs2RpbyBubyBkZWNvcnJlciBkYXMgdGVtcG9yYWRhcy4gCiAgQSBzw6lyaWUgbWFpcyBiZW0gdm90YWRhIMOpICoqRnJpZW5kcyoqLCBwb3NzdWluZG8gbWFpcyBub3RhcyBtw6F4aW1hcyBkZW50cmUgYXMgZGVtYWlzIGF2YWxpYcOnw7VlcyBwb3IgZXBpc8OzZGlvLiBFc3RlIHNlcmlhZG8gbGlkZXJvdSBhcyBkZW1haXMgcHJpbmNpcGFsbWVudGUgZHVyYW50ZSBhcyB0ZW1wb3JhZGFzIDEgZSAzLCBwb3NzdWluZG8gcXVhc2UgMzUlIGRhcyBub3RhcyBjb20gdmFsb3IgbcOheGltby4gTm90YS1zZSBxdWUsIGEgcGFydGlyIGRhIDPCqiB0ZW1wb3JhZGEsIGVzc2EgcHJvcG9yw6fDo28gZGltaW51aXUgZHJhc3RpY2FtZW50ZSwgY2hlZ2FuZG8gYSBzZXUgbcOtbmltbyBuYSA1wqogdGVtcG9yYWRhLCBjb20gdmFsb3IgaWd1YWwgYSAyOCUuIFVtYSBwb3Nzw612ZWwgcmF6w6NvIHBhcmEgZXNzYSBxdWVkYSBzZXJpYSBvIHTDqXJtaW5vIGRvIGNhc2FsIFJhY2hlbCBlIFJvc3MgZSBvIG5vdm8gbmFtb3JvIGRlIFJvc3MgY29tIEVtaWx5LgogICoqSG91c2UqKiBvY3Vwb3UgYSBzZWd1bmRhIHBvc2nDp8OjbyBkbyByYW5raW5nLCBjb20gYXZhbGlhw6fDo28gY3Jlc2NldGUgYW8gbG9uZ28gZGFzIHRlbXBvcmFkYXMgZSBkb21pbmFuZG8gYXMgbWVsaG9yZXMgYXZhbGlhw6fDtWVzIGR1cmFudGUgNCB0ZW1wb3JhZGFzOiA0wqosIDXCqiwgNsKqIGEgN8KqLiBBY3JlZGl0byBxdWUgYSBxdWVkYSBuYSA4wqogdGVtcG9yYWRhIHNlIGRldmEgcGVsYXMgKiphbGVydGEgZGUgc3BvaWxlcioqIG1vcnRlcyBkZSBwZXJzb25hZ2VucyBpbXBvcnRhbnRlcyBkYSBzw6lyaWUuCiAgKipEZXNwZXJhdGUgSG91c2V3aXZlcyoqIGZpY291IGVtIMO6bHRpbW8gbHVnYXIsIHBvc3N1aW5kbyBhdmFsaWHDp8OjbyBjcmVzY2VudGUgY29tIGV4Y2XDp8OjbyBwcmluY2lwYWxtZW50ZSBkYSA2wqogdGVtcG9yYWRhLCBxdWUgdGV2ZSBvIHZhbG9yIG3DrW5pbW8gZW50cmUgdG9kYXMgYXMgdGVtcG9yYWRhcyBkZSB0b2RhcyBhcyBzw6lyaWVzLiBBY3JlZGl0byBxdWUgZXN0YSBxdWVkYSBvY29ycmV1IGRldmlkbyBhbyBtaXN0w6lyaW8gZW52b2x2ZW5kbyBvIGVzdHJhbmd1bGFkb3IgZGUgRmFpcnZpZXcsIGFsw6ltIGRhIGNhdMOhc3Ryb2ZlIGVudm9sdmVuZG8gYSBxdWVkYSBkZSB1bSBhdmnDo28gZGVudHJvIGRvIGNvbmRvbcOtbmlvIG9uZGUgYXMgcHJpbmNpcGFpcyBwZXJzb25hZ2VucyByZXNpZGVtLgogIAojIyMgIFF1YWwgZGFzIHPDqXJpZXMgdGVtIGVwaXPDs2Rpb3MgZGUgcXVhbGlkYWRlIG1haXMgaXJyZWd1bGFyIHNlZ3VuZG8gbyBJTURCPyBBIGRpZmVyZW7Dp2Egw6kgZ3JhbmRlPyBQZXF1ZW5hPyAKCmBgYHtyfQplcGlzb2RlcyAlPiUgCiAgZ3JvdXBfYnkoc2VyaWVzX25hbWUpICU+JQogICAgZ2dwbG90KGFlcyh4ID0gc2VyaWVzX25hbWUsIHkgPSB1c2VyX3JhdGluZykpICsgCiAgICBnZW9tX2JveHBsb3Qod2lkdGggPSAuNSwgb3V0bGllci5jb2xvciA9IE5BKSArICAgCiAgICBnZW9tX2ppdHRlcih3aWR0aCA9IC4xLCBzaXplID0gMiwgYWxwaGEgPSAuNSwgY29sb3IgPSAicHVycGxlIikgKwogIGxhYnMoeCA9ICJTw6lyaWVzIiwgeSA9ICJBdmFsaWHDp8OjbyBubyBJTURCIikKYGBgCiAgT3MgZ3LDoWZpY29zIGFjaW1hIGV4aWJlbSBhIHJlbGHDp8OjbyBlbnRyZSBvIGVwaXPDs2RpbyBlIGEgYXZhbGlhw6fDo28gZGFkYSBwZWxvIHVzdcOhcmlvcyBwb3IgdGVtcG9yYWRhIGVtIGNhZGEgdW1hIGRhcyB0csOqcyBzw6lyaWVzLiAKICBBIHPDqXJpZSBxdWUgcG9zc3VpIG1haW9yIHZhcmlhw6fDo28gZGUgYXZhbGlhw6fDo28gZG9zIHVzdcOhcmlvcyDDqSAqKkhvdXNlKiosIHNlZ3VpbmRvIGRlICoqRnJpZW5kcyoqIGUgKipEZXNwZXJhdGUgSG91c2V3aXZlcyoqLiBBIGRpZmVyZW7Dp2EgZW50cmUgb3MgZXBpc8OzZGlvcyBkZSBIb3VzZSB2YXJpYW0gZGUgNy42IGEgOS40LCBjb20gYSBtYWlvciBwYXJ0ZSBkYXMgYXZhbGlhw6fDtWVzIGVudHJlICA4LjAgZSA5LjIuIEEgYXZhbGlhw6fDo28gZG9zIGVwaXPDs2Rpb3MgZGUgRnJpZW5kcyB2YXJpYW0gZW50cmUgNy41IGUgOS41LCBwb3NzdWluZG8gbWFpb3IgY29uY2VudHJhw6fDo28gZGFzIG5vdGFzIGVudHJlIDguMCBlIDkuMC4gRGVzcGVyYXRlIEhvdXNld2l2ZXMgcG9zc3VpIG1haW9yIGNvbmNlbnRyYcOnw6NvIGRlIGF2YWxpYcOnw7VlcyBlbnRyZSA3LjcgZSA4LjIsIHBvc3N1aW5kbyBlcGlzw7NkaW9zIGNvbSBub3RhcyBtYWlzIHJlZ3VsYXJlcyBlbnRyZSBhcyB0csOqcy4KCiMjIyBRdWFsIGRhcyBzw6lyaWVzIG91IHRlbXBvcmFkYXMgdGVtIGVwaXPDs2Rpb3MgbWFpcyBzZW0gZ3Jhw6dhPyAoVW0gZXBpc8OzZGlvIMOpIHNlbSBncmHDp2Egc2UgbmluZ3XDqW0gbmVtIGFtYSBuZW0gb2RlaWEgZWxlKSAKCiAgT3MgZXBpc8OzZGlvcyBmb3JhbSBjb25zaWRlcmFkb3Mgc2VtIGdyYcOnYSBkZSBhY29yZG8gY29tIGEgcHJvcG9yw6fDo28gZGUgdm90b3MgaWd1YWlzIGEgNSAoY29uc2lkZXJhZG9zIG5ldXRyb3MpIGVtIHJlbGHDp8OjbyBhbyBuw7ptZXJvIHRvdGFsIGRlIHZvdG9zLiAKCmBgYHtyfQplcGlzb2RlcyA9ICBlcGlzb2RlcyAlPiUKICAgIG11dGF0ZSgKICAgICAgICByYW5rX29kaWFkb3MgPSByb3dfbnVtYmVyKHIxKSwgIyBtYWlvciA9IG1haXMgb2RpYWRvCiAgICAgICAgcmFua19hbWFkb3MgPSByb3dfbnVtYmVyKHIxMCksICMgbWFpb3IgPSBtYWlzIGFtYWRvCiAgICAgICAgcmFua19zZW1fZ3JhY2EgPSByb3dfbnVtYmVyKHI1KSwgIyBtYWlvciA9IG1haXMgc2VtIGdyYWNhLAogICAgICAgIGFtYWRvX29kaWFkbyA9IHJhbmtfYW1hZG9zICogcmFua19vZGlhZG9zKSAjIG1haW9yID0gbWFpcyBhbWFkbyBFIG9kaWFkbwoKZXBpc29kZXMgJT4lIGdyb3VwX2J5KHNlcmllc19uYW1lKSAlPiUKICAgIGdncGxvdChhZXMoCiAgICAgICAgeCA9IHI1LAogICAgICAgIHkgPSBzZWFzb24sCiAgICAgICAgY29sb3IgPSBzZXJpZXNfbmFtZSwKICAgICAgICBsYWJlbCA9IHNlYXNvbl9lcCwKICAgICAgICBzaXplID0gcmFua19zZW1fZ3JhY2EKICAgICkpICsKICAgIGdlb21fcG9pbnQoYWxwaGEgPSAuNSkgKwogICAgZ2VvbV90ZXh0KG51ZGdlX3ggPSAuMDAxLCBudWRnZV95ID0gLS4wMSkgKwogIGxhYnMoeSA9ICJUZW1wb3JhZGFzIiwgeCA9ICJQcm9wb3LDp8OjbyBkZSB2b3RvcyBuZXV0cm9zIikgKwogIGd1aWRlcyhjb2xvcj1ndWlkZV9sZWdlbmQoIlPDqXJpZSIpLCBzaXplID0gZ3VpZGVfbGVnZW5kKCJOw612ZWwgZGUgY2hhdGljZSIpKQpgYGAKICAKICAqKkZyaWVuZHMqKiDDqSBhIHPDqXJpZSBxdWUgcG9zc3VpIG1haXMgZXBpc8OzZGlvcyBzZW0gZ3Jhw6dhLCBzZWd1aWRvIHBvciBIb3VzZSBlIERlc3BlcmF0ZSBIb3VzZXdpdmVzLiBEZW50cmUgYXMgdGVtcG9yYWRhcyBkYSBzw6lyaWUsIGFzIHF1ZSBwb3NzdWVtIGVwaXPDs2Rpb3MgbWFpcyBzZW0gZ3Jhw6dhIHPDo28gYXMgdGVtcG9yYWRhcyA0IGUgMTAuIE8gZXBpc8OzZGlvIG1haXMgY2hhdG8gZGUgdG9kb3Mgb3MgdGVtcG9zIGRlIGFjb3JkbyBjb20gb3Mgdm90b3MgZG9zIHVzdcOhcmlvcyDDqSAqKlM4RTE2IC0gVGhlIE9uZSBXaGVyZSBKb2V5IFRlbGxzIFJhY2hlbCoqLCBvbmRlIEpvZXkgY29udGEgcGFyYSBSYWNoZWwgcXVlIGVzdMOhIGFwYWl4b25hZG8gcG9yIGVsYSwgcHJvdmF2ZWxtZW50ZSB1bWEgcGFyY2VsYSBkYXMgcGVzc29hcyB0b3JjaWFtIHBlbG8gY2FzYWwsIGVucXVhbnRvIGEgb3V0cmEgdG9yY2lhIHBvciBSYWNoZWwgZSBSb3NzLiBPIHNlZ3VuZG8gZXBpc8OzZGlvIG1haXMgY2hhdG8gZGEgc8OpcmllIMOpICoqUzRFMjIgLSBUaGUgT25lIHdpdGggdGhlIFdvcnN0IEJlc3QgTWFuIEV2ZXIqKiwgb25kZSBvcyB0csOqcyBwZXJzb25hZ2VucyBtYXNjdWxpbm9zIGRpc2N1dGVtIHNvYnJlIHF1ZW0gc2Vyw6EgbyBwYWRyaW5obyBkZSBjYXNhbWVudG8gZG9zIG91dHJvcyBlIEpvZXkgYWNhYmEgcGVyZGVuZG8gbyBhbmVsIGRlIGNhc2FtZW50by4gRXNzZSBlcGlzw7NkaW8gc2VyIGNvbnNpZGVyYWRvIG8gc2VndW5kbyBtYWlzIGNoYXRvIG1lIHN1cnByZWVuZGV1IHBvaXMgbmVsZSB0YW1iw6ltIG9jb3JyZSBvIGNow6EgZGUgYmViw6ogZGEgUGhvZWJlIChxdWUgY29uc2lkZXJvIGEgcGVyc29uYWdlbSBtYWlzIGVuZ3Jhw6dhZGEgZG8gc2VyaWFkbykgZSB0ZW0gY2VuYXMgYmVtIGVuZ3Jhw6dhZGFzLiBPIHRlcmNlaXJvIGVwaXPDs2RpbyBtYWlzIGNoYXRvIMOpIHRhbWLDqW0gZGEgc8OpcmllIEZyaWVuZHMsIG8gKipTMTBFMTIgLSBUaGUgT25lIFdpdGggUGhvZWJlJ3MgV2VkZGluZyoqLCBvbmRlIFBob2ViZSBzZSBjYXNhLCBhcGVzYXIgZGUgdHVkbyBkYXIgZXJyYWRvIG8gZXBpc8OzZGlvIHF1YXNlIHRvZG8sIG1vdGl2byBxdWUgcG9kZSB0ZXIgY2F1c2FkbyBlc3NhIHBvc2nDp8OjbyBkZSBjaGF0aWNlIGRvIGVwaXPDs2Rpby4gCiAgCiMjIyBFcGlzw7NkaW9zIG5vIGluw61jaW8vZmltIGRhIHRlbXBvcmFkYSBzw6NvIG1haXMgYmVtIGF2YWxpYWRvcyBxdWUgb3Mgbm8gbWVpbz8gTyBxdWUgdGVuZGUgYSBzZXIgbWVsaG9yPyBJbsOtY2lvcyBvdSBmaW5haXMgZGUgc8Opcmllcy90ZW1wb3JhZGFzPwoKYGBge3J9CmVwaXNvZGVzICU+JSBncm91cF9ieShzZXJpZXNfbmFtZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2Vhc29uX2VwLCB5ID0gdXNlcl9yYXRpbmcsIGNvbG9yID0gc2VyaWVzX25hbWUpKSArCiAgZ2VvbV9qaXR0ZXIod2lkdGggPSAuMSwgc2l6ZSA9IC41LCBhbHBoYSA9IC41KSArCiAgZ2VvbV9saW5lKCkgKwogIGxhYnMoeCA9ICJFcGlzw7NkaW9zIiwgeSA9ICJBdmFsaWHDp8OjbyIpICsKICBmYWNldF93cmFwKH4gc2Vhc29uKSArCiAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZCgiU8OpcmllIikpCmBgYAoKICBQZWxvIGdyw6FmaWNvIGFjaW1hLCBwb2RlLXNlIG9ic2VydmFyIHF1ZSBhcyBtZWxob3JlcyBhdmFsaWHDp8O1ZXMgZGUgdW1hIHRlbXBvcmFkYSBlc3TDo28gbm9ybWFsbWVudGUgZW0gc2V1cyBlcGlzw7NkaW9zIGZpbmFpcywgY29tIGV4Y2XDp8OjbyBkZSBhbGd1bWFzIHRlbXBvcmFkYXM6IDPCqiwgNcKqIGUgN8KqIHRlbXBvcmFkYXMgZGUgRGVzcGVyYXRlIEhvdXNld2l2ZXMgZSBhIDLCqiBlIDXCqiB0ZW1wb3JhZGFzIGRlIEZyaWVuZHMsIHF1ZSB0aXZlcmFtIGFzIG1lbGhvcmVzIGF2YWxpYcOnw7VlcyBuYSBtZXRhZGUgZGUgc3VhcyB0ZW1wb3JhZGFzOyA0wqogcmVtcG9yYWRhIGRlIEhvdXNlIGUgOMKqIGRlIEZyaWVuZHMgdGl2ZXJhbSBhcyBtZWxob3JlcyBhdmFsaWHDp8O1ZXMgZW0gc2V1cyBpbsOtY2lvcyBkZSB0ZW1wb3JhZGFzLgogIEFzIHPDqXJpZXMgRnJpZW5kcyBlIERlc3BlcmF0ZSBIb3VzZXdpdmVzIHRpdmVyYW0gc3VhcyBtZWxob3JlcyBhdmFsaWHDp8O1ZXMgZGUgZXBpc8OzZGlvIG5hcyB0ZW1wb3JhZGFzIGZpbmFpcy4gSG91c2UgdGV2ZSBtZWxob3JlcyBlcGlzw7NkaW9zIG5vIG1laW8gZGEgc8OpcmllLCBuYXMgdGVtcG9yYWRhcyA0LCA1IGUgNi4KCiMjIyBRdWFsIG8gZXBpc8OzZGlvIG1haXMgZGV0ZXN0YWRvPyAKCmBgYHtyfQplcGlzb2RlcyAlPiUgZ3JvdXBfYnkoc2VyaWVzX25hbWUpICU+JQogICAgZ2dwbG90KGFlcygKICAgICAgICB4ID0gcjEsCiAgICAgICAgeSA9IHNlYXNvbiwKICAgICAgICBjb2xvciA9IHNlcmllc19uYW1lLAogICAgICAgIGxhYmVsID0gc2Vhc29uX2VwLAogICAgICAgIHNpemUgPSByYW5rX29kaWFkb3MpKSArCiAgICBnZW9tX3BvaW50KGFscGhhID0gLjUpICsKICAgIGdlb21fdGV4dChudWRnZV94ID0gLjAwMSwgbnVkZ2VfeSA9IC0uMDEpICsKICBsYWJzKHkgPSAiVGVtcG9yYWRhcyIsIHggPSAiUHJvcG9yw6fDo28gZGUgdm90b3Mgb2RpYWRvcyIpICsKICBndWlkZXMoY29sb3I9Z3VpZGVfbGVnZW5kKCJTw6lyaWUiKSwgc2l6ZSA9IGd1aWRlX2xlZ2VuZCgiTsOtdmVsIGRlIMOzZGlvIikpCmBgYAoKICBIb3VzZSBsaWRlcmEgZGUgbG9uZ2Ugb3MgZXBpc8OzZGlvcyBtYWlzIG9kaWFkb3MgcGVsbyBJTURiLiBPIGVwaXPDs2RpbyBtYWlzIG9kaWFkbyDDqSBvICoqUzdFMTggLSBUaGUgRGlnKiogZSBhIHJhesOjbyBzw7Mgc2FiZXJlaSBxdWFuZG8gdGVybWluYXIgYSBzw6lyaWUuIChFc3RvdSBuYSBxdWludGEgdGVtcG9yYWRhIGUgcG9zdGFyZWkgYSBtaW5oYSBvcGluacOjbyBzb2JyZSBvIGVwaXPDs2RpbyBhc3NpbSBxdWUgYXNzaXN0aS1sbyEpLiBPIGVwaXPDs2RpbyBtYWlzIG9kaWFkbyBkZSBGcmllbmRzIHRhbWLDqW0gw6kgbyAqKlM4RTE2IC0gVGhlIE9uZSBXaGVyZSBKb2V5IFRlbGxzIFJhY2hlbCoqLCBvIHF1ZSBKb2V5IGNvbnRhIHBhcmEgUmFjaGVsIHF1ZSBlc3TDoSBhcGFpeG9uYWRvIHBvciBlbGEuIENvaW5jaWRlbnRlbWVudGUsIG8gZXBpc8OzZGlvIG1haXMgb2RpYWRvIGRlIERlc3BlcmF0ZSBIb3VzZXdpdmVzIHRhbWLDqW0gcG9zc3VpIGEgbWVzbWEgbnVtZXJhw6fDo28gZG8gZXBpc8OzZGlvIGRlIEZyaWVuZHM6ICoqUzhFMTYgLSBZb3UgVGFrZSBmb3IgR3JhbnRlZCoqLCBvbmRlIE1pa2UgRGVsZmlubywgdW0gZG9zIHBlcnNvbmFnZW5zIHByaW5jaXBhaXMgZSBtYWlzIHF1ZXJpZG9zIChuYSBtaW5oYSBvcGluacOjbykgbW9ycmUsIHBvciB1bSBtb3Rpdm8gYmFuYWwgZSBuYSBjYWzDp2FkYSBkZSBjYXNhLiBFc3RlIGNvbSBjZXJ0ZXphIG1lcmVjZXUgbyB0w610dWxvIGRlIG1haXMgb2RpYWRvIGRhIHPDqXJpZSBpbnRlaXJhLgoKIyMjIEUgYW1hZG8/IAoKYGBge3J9CmVwaXNvZGVzICU+JSBncm91cF9ieShzZXJpZXNfbmFtZSkgJT4lCiAgICBnZ3Bsb3QoYWVzKAogICAgICAgIHggPSByMTAsCiAgICAgICAgeSA9IHNlYXNvbiwKICAgICAgICBjb2xvciA9IHNlcmllc19uYW1lLAogICAgICAgIGxhYmVsID0gc2Vhc29uX2VwLAogICAgICAgIHNpemUgPSByYW5rX2FtYWRvcykpICsKICAgIGdlb21fcG9pbnQoYWxwaGEgPSAuNSkgKwogICAgZ2VvbV90ZXh0KG51ZGdlX3ggPSAuMDAxLCBudWRnZV95ID0gLS4wMSkgKwogIGxhYnMoeSA9ICJUZW1wb3JhZGFzIiwgeCA9ICJQcm9wb3LDp8OjbyBkZSB2b3RvcyBhbWFkb3MiKSArCiAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZCgiU8OpcmllIiksIHNpemUgPSBndWlkZV9sZWdlbmQoIk7DrXZlbCBkZSBhbW9yIikpCmBgYAogIAogIEZyaWVuZHMgcG9zc3VpIG9zIGVwaXPDs2Rpb3MgbWFpcyBhbWFkb3MgZGVudHJlIGFzIGRlbWFpcyBzw6lyaWUsIGRlc3RhY2FuZG8tc2UgdHLDqnMgZXBpc8OzZGlvcyBkYSBwcmltZWlyYSB0ZW1wb3JhZGE6ICoqUzFFMyAtIFRoZSBPbmUgV2l0aCB0aGUgVGh1bWIqKiwgb25kZSBQaG9lYmUgdmFpIGdhbmhhbmRvIG1haXMgZGluaGVpcm8gY29uZm9ybWUgdmFpIGZhemVuZG8gYm9hcyBhw6fDtWVzLCAqKlMxRTQgLSBUaGUgT25lIHdpdGggR2VvcmdlIFN0ZXBoYW5vcG91bG9zKiosIGVtIHF1ZSBvcyBtZW5pbm9zIGxldmFtIFJvc3MgcGFyYSBzYWlyIGUgZXNxdWVjZXIgbyBhbml2ZXJzw6FyaW8gZGUgY2FzYW1lbnRvIGNvbSBhIGV4IGVzcG9zYSBlICoqUzFFMjIgLSBUaGUgT25lIHdpdGggdGhlIEljayBGYWN0b3IqKiwgb25kZSB0ZW0gbyBuYW1vcmFkbyBub3ZvIGRhIE1vbmljYSBlIENoYW5kbGVyIGRlc2NvYnJpbmRvIHF1ZSBuaW5ndcOpbSBkbyB0cmFiYWxobyBnb3N0YSBkZWxlLgo=