Detalhes sobre os grupos

Ao bucar a média de retorno dos últimos 6 meses de alguns parceiros, é possível perceber há grande variância.

Como exemplo, se no mês de maio a produção foi de R$50mil, e, no mês de junho R$100mil, a série de retornos trará um aumento de 100%.

Este é fato que impossibilita traçar uma única política como campanha (e.g. acrescimo de 10% no valor produzido).

A tabela abaixo apresenta os retornos de 5 parceiros, e a média no período de fevereiro a junho.

Amostra - tendência de retornos por mês (2025)
Fevereiro Março Abril Maio Junho Média
-11.21 151.30 -83.34 270.31 -85.74 48.264
-30.40 275.10 -33.91 -44.54 73.22 47.894
-79.49 457.05 -24.64 -19.24 5.28 67.792
95.34 -4.08 -35.74 -60.68 104.79 19.926
-51.15 308.33 -77.22 -2.08 73.04 50.184

À esquerda, a linha representa o comportamento dos retornos de produção dos parceiros v8; à direta, como deveriam ser para que fosse possível capturar um padrão traçar uma campanha no formato de meta percentual fixa.

Retornos reais

Os retornos reais, contudo, demonstram grande variância (de -90% à 3000%), e forma não lineare (sem padrão identificável e contínuo).

Mesmo tratando a não-linearidade, a grande variância dos retornos é um impedimento ainda presente para se fixar apenas um limiar para todos os parceiros.

[1] "Em escala real, a média é de  26.5 % e o desvio é de  149.73 %"

No caso dos perceiros da v8, considerando-se os retornos positivos, pode-se afirmar que:

Usando o seguinte procedimento, podemos apurar que:

1 - Em aproximadamente 54% dos cacos, a média de retorno será maios que 10%

2 - Em aproximadamente 50% dos casos, a média de retorno será maior que 26,5%

3 - Em aproximadamente 16% dos casos, a média de retorno será maior 176.23%.

4 - Em aproximadamente 2,5% casos, a média de retorno será maior que 325.96%.

5 - Em aproximadamente 0.15% casos, a média de retorno será maior que 475.69%.

Sugestão para novas campanhas

Identificar grupos que tenham características diferentes em relação ao valor produzido, e basear a campanha para o crescimento dentro do grupo.

Os grupos são formados levando em consideração regiões de valores em que há maior concentração de parceiros.

Por exemplo, no grupo 5, há parceiros entre 60mil e 250mil, entretando, 50% deles estão entre 65mil e 130mil, sendo que, ainda mais concentrado no valor de 90mil.

Isso significa que podemos atingir um maior número de parceiros, dentro desta faixa, se mirarmos nos parceiros que produzem perto da média, e, fazendo-os elevar o valor produzido.

Em resumo, estaremos estimulando a maior fração de parceiros dentro desta faixa à buscar um valor que, de fato, representa um desafio, mas, é bastante provável.

Características dos grupos

Estatísticas por grupo
Grupo Concentração(50%) Media Representatividade
6 307922.26 - 699728.42 393339.73 1.67
2 74980.18 - 134760.16 95602.43 8.03
4 17806.74 - 30982.45 22845.07 15.55
5 6875.52 - 11817.72 9170.87 26.59
3 2932.87 - 4698.86 3770.57 27.76
1 870.1 - 1648.63 1340.45 20.40

Quanto maiores são os valores produzidos, menos parceiros estarão representados pela campanha. Por isso, é crucial definir o objetivo da campanha, e depois as políticas.

Com base na amostra colhida, o grupo 5 tem a maior faixa de valor (R$ 65.085,28 - R$ 130.626,53), mas, representa apenas 8,86% dos parceiros.

Definindo faixas

A campanha pode ser modelada de acordo com os objetivos, e, observando as características dos parceiros.

Abaixo, sugestão de campanha focada nos 90% dos parceiros da amostra colhida.

Sugere-se com valores para faixas, o correspondente ao terceiro quartil de cada grupo (.75%).

Assim, promoveremos o aumento da produção dentro de cada grupo.

Faixas:
Faixa Valor Representatividade Objetivo
Faixa 1 R$ 10.596.96 72,76% Deslocar a média de 6mil para para 10,5mil
Faixa 2 R$ 27.173.08 16,71% Deslocar a média de 16,5mil para para 27mil
Faixa 3 R$ 130.626.53 8,86% Deslocar a média de 90mil para para 130mil
Faixa 4 R$ 700.000,00 1,67% Deslocar a média de 400mil para para 700mil

As faixas podem ser alteráveis de acordo com o objetivo da campanha.

Premiação sugerida:

Suposições

Com base em estudos anteriores, é possível afirmar (com 95% de certeza) que o valor de emissão das propostas estará entre R$ 110,00 e 156,00. Sendo 110,00 a moda (valor que mais se digita na tabela, e, como média 153,21 - OBS: os dados são assimétricos)

Nesta faixa de valor

Faixa Premiação Meta Parceiros na premiação
Faixa 1 R$ 250,00 R$ 10.596.96 295
Faixa 2 R$ 500,00 R$ 27.173.08 139
Faixa 3 R$ 1.000,00 R$ 130.626.53 30
Faixa 4 R$ 1.500,00 R$ 700.000,00 5

Custo mínimo previsto: R$ 180.000,00

Avaliação da campanha do iphone

Objetivos declarados

Esta CAMPANHA tem por objetivo, mediante distribuição de prêmios (“PREMIAÇÃO”), fomentar a produção de FGTS nas tabelas TURBO e ACELERA, produto disponível pelo ORGANIZADOR, segundo os critérios definidos neste regulamento.(SIC)

Vigência 22/10/2024 até o dia 30/11/2024

Período comparado 16/09/2024 até o dia 21/10/2024

Resultado teste de hipótese (test-t)

Conforme teste de hipótese (p-valor = 0.5267), é possível afirmar (com nível de confiança de 95%) que não houve diferença estatisticamente significante no volume médio de contratos digitados por parceiros.

O gráfico acima e o teste de hipótese se complementam para demonstrar que:

  • A média de contratos digitados por parceiros no mesmo período anterior à campanha está entre 75/95 contratos.

  • A média de contratos digitados por parceiros durante a campanha está entre 85/105 contratos.

Significa dizer que, mesmo ocorrendo um aumento, este aumento pode ser atribuído à variância média (natural) do número de contratos digitados por parceiros. Sendo assim, nas amostras comparadas, a campanha do iphone não gerou efeito relavante.

Conclusão

Campanhas com metas de produção acima dos R$ 130.000,00 são muito improváveis para quase 98% dos parceiros. Portanto, se a campanha visa incentivar a produção na grande massa de parceiros, as metas devem ser menores.

Os grupos acima são sugestões (estudos mais aprofundados podem ser realizados, visando destacar cada vez mais as diferenças entre eles), mas, são suficientes para demonstrar que existem concentrações de parceiros em algumas faixas de valores.

As metas são desenhadas como um valor ‘provável’ para a os parceiros dentro das respectivas faixas, o que torna o incentivo à produção um objetivo palpável.

Abaixo, a premiação sugerida por faixa de valor, e, previsão de investimento mínimo calculado com base no mês de julho/2025.

Faixa Premiação Meta Parceiros na premiação
Faixa 1 R$ 250,00 R$ 10.596.96 295
Faixa 2 R$ 500,00 R$ 27.173.08 139
Faixa 3 R$ 1.000,00 R$ 130.626.53 30
Faixa 4 R$ 1.500,00 R$ 700.000,00 5

Custo mínimo previsto: R$ 180.000,00

LS0tDQp0aXRsZTogIkFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgcGFyYSBmdXR1cmFzIGNhbXBhbmhhcyBWOCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgZWNobz1GQUxTRSwgaW5jbHVkZT1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpDQoNCiMgZGVmaW5pbmRvIGxvZyBkZSBhdmlzb2ENCm9wdGlvbnMod2FybiA9IC0xKQ0KDQojbGlicmFyaWVzDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGxhdHRpY2UpDQpsaWJyYXJ5KHBhdGNod29yaykNCg0KDQoNCiMgQ2FycmVnYW5kbyBkYWRvcw0KIyMgQW1vc3RyYSBjb250ZW5kbyBkYWRvcyBkb3Mgw7psdGltb3MgMzAgZGlhcw0KDQphbW9zdHJhIDwtIHJlYWRfY3N2KCJ5Oi9GSU5BTkNFSVJPL0ZhZ25lci9UaGFpcy9HZXJhZG9yIGRlIGNhbXBhbmhhcy9pbnB1dF9kYXRhL3RlbmRlbmNpYS5jc3YiKQ0KDQphbW9zdHJhX2xpbXBhIDwtIGFtb3N0cmFbY29tcGxldGUuY2FzZXMoYW1vc3RyYSksIF0NCmRhZG9zX3Byb2QgPC0gYW1vc3RyYV9saW1wYVssIGMoJ2phbl9wcm9kJywgJ2Zldl9wcm9kJywgJ21hcl9wcm9kJywgJ2Ficl9wcm9kJywgJ21haV9wcm9kJywgJ2p1bl9wcm9kJywgJ2p1bF9wcm9kJyldDQpkYWRvc19wcm9kIDwtIGRhZG9zX3Byb2QgJT4lDQogIG11dGF0ZSgNCiAgICByZXRfZmV2ID0gcm91bmQoKChmZXZfcHJvZCAvIGphbl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfbWFyID0gcm91bmQoKChtYXJfcHJvZCAvIGZldl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfYWJyID0gcm91bmQoKChhYnJfcHJvZCAvIG1hcl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfbWFpID0gcm91bmQoKChtYWlfcHJvZCAvIGFicl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfanVuID0gcm91bmQoKChqdW5fcHJvZCAvIG1haV9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfanVsID0gcm91bmQoKChqdWxfcHJvZCAvIGp1bl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgKQ0KDQpkZl9yZXRvcm5vIDwtIGRhZG9zX3Byb2RbLCBjKCJyZXRfZmV2IiwgInJldF9tYXIiLCAicmV0X2FiciIsICJyZXRfbWFpIiwgInJldF9qdW4iKV0NCmRmX3JldG9ybm8kbWVhbl92YXIgPC0gcm93TWVhbnMoZGZfcmV0b3JubykNCmluZGV4X291dGxpZXJzIDwtIHNjYWxlKGRmX3JldG9ybm8kbWVhbl92YXIpID4gMg0KZGZfcmV0b3JubyA8LSBkZl9yZXRvcm5vWyFpbmRleF9vdXRsaWVycywgXQ0KDQojIGRhdGFzZXQgY29tIHZhbG9yZXMNCmRmX3ZhbG9yZXMgPC0gZGFkb3NfcHJvZFssIGMoJ2phbl9wcm9kJywgJ2Zldl9wcm9kJywgJ21hcl9wcm9kJywgJ2Ficl9wcm9kJywgJ21haV9wcm9kJywgJ2p1bl9wcm9kJywgJ2p1bF9wcm9kJyldDQpkZl92YWxvcmVzJG1lYW5fdmFyIDwtIHJvd01lYW5zKGRmX3ZhbG9yZXMpDQppbmRleF9vdXRsaWVycyA8LSBzY2FsZShkZl92YWxvcmVzJG1lYW5fdmFyKSA+IDINCg0KZGZfdmFsb3Jlc19pbiA8LSBkZl92YWxvcmVzWyFpbmRleF9vdXRsaWVycywgXQ0KZGZfdmFsb3Jlc19vdXQgPC0gZGZfdmFsb3Jlc1tpbmRleF9vdXRsaWVycywgXQ0KDQoNCiMjIGZ1bsOnw6NvIHBhcmEgcmV0b3JuYXIgbyBkZXN2aW8gcGFkcsOjbyBkZSBkYWRvcyBsb2ctdHJhbnNmb3JtYWRvcw0KcmV0b3Jub19zZF9kZXNfbG9ndHJhbnNmb3JtdGF0aW9uIDwtIGZ1bmN0aW9uKGxvZ19tZWFuLCBsb2dfZGV2aWF0aW9uKXsNCiAgICAgIA0KICBzdGFuZGFydF9kZXZpYXRpb24gPSBzcXJ0KChleHAobG9nX2RldmlhdGlvbiAqKjIpIC0gMSkgKiANCiAgICAgICAgICAgICBleHAoMiAqIGxvZ19tZWFuICsgbG9nX2RldmlhdGlvbiAqKiAyKSkNCg0KICByZXR1cm4oc3RhbmRhcnRfZGV2aWF0aW9uKQ0KICANCn0NCg0KIyBDb25nZWxhbmRvIGFsZWF0b3JpZWRhZGUNCnNldC5zZWVkKDQwKQ0KDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQoNCg0KIyBmdW7Dp8OjbyBwYXJhIGdlcmFyIGdyw6FmaWNvDQpjb21wYXJhbmRvX21lZGlhcyA8LSBmdW5jdGlvbihkYWRvcyl7DQoNCiAgb3JkZXJlZF9tb250aHMgPC0gYygnc2VtX2lwaG9uZScsICdpcGhvbmUnKQ0KICBjb2xuYW1lcyhkYWRvcykgPC0gYygic2FtcGxlX2lkIiwgJ2RhZG9zJykNCiAgdG9QbG90IDwtIGRhdGEuZnJhbWUoDQogICAgDQogICAgc2FtcGxlX2lkID0gYXMuY2hhcmFjdGVyKCksDQogICAgbWVhbiA9IGFzLm51bWVyaWMoKSwNCiAgICBsb3dlciA9IGFzLm51bWVyaWMoKSwNCiAgICB1cHBlciA9IGFzLm51bWVyaWMoKSwNCiAgICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UNCiAgKQ0KDQogIGZvciAoY29tZXJjaWFsIGluIHVuaXF1ZShkYWRvcyRzYW1wbGVfaWQpKSB7DQogICAgDQogICAgICAgICAgYW1vc3RyYSA8LSBkYWRvc1tkYWRvcyRzYW1wbGVfaWQgPT0gY29tZXJjaWFsLCBdDQogICAgICAgICAgDQogICAgICAgICAgIyBlc2NyZXZlciBmdW5DJ0MjbyBwYXJhIGNvbmNhdGVuYXIgdG9kYXMgYXMgYW1vc3RyYXINCiAgICAgICAgICBtZWRpYSA9IG1lYW4oYW1vc3RyYSRkYWRvcykNCiAgICAgICAgICBkZXN2aW8gPSBzZChhbW9zdHJhJGRhZG9zKQ0KICAgICAgICAgIGVycm9fcGFkcmFvX2Ftb3N0cmEgPSBkZXN2aW8gLyBzcXJ0KG5yb3coYW1vc3RyYSkpDQogICAgICAgICAgI2NhbGN1bGFuZG8gbGltaXRlcyBpbmZlcmlvciBlIHN1cGVyaW9zDQogICAgICAgICAgbG93ZXIgPC0gcm91bmQobWVkaWEgLSAxLjk2ICogZXJyb19wYWRyYW9fYW1vc3RyYSwgMikNCiAgICAgICAgICB1cHBlciA8LSByb3VuZChtZWRpYSArIDEuOTYgKiBlcnJvX3BhZHJhb19hbW9zdHJhLCAyKQ0KICAgICAgICAgIHRvUGxvdCA8LSByYmluZCgNCiAgICAgICAgICAgIHRvUGxvdCwgZGF0YS5mcmFtZSgNCiAgICAgICAgICAgICAgc2FtcGxlX2lkID0gY29tZXJjaWFsLA0KICAgICAgICAgICAgICBtZWFuID0gbWVkaWEsDQogICAgICAgICAgICAgIGxvd2VyID0gbG93ZXIsDQogICAgICAgICAgICAgIHVwcGVyID0gdXBwZXINCiAgICAgICAgICAgICkNCiAgICAgICAgICApDQogICAgICAgICAgDQogICAgICB9ICANCiAgZ2dwbG90KHRvUGxvdCwgbWFwcGluZyA9IGFlcyh4ID0gYXMuZmFjdG9yKHNhbXBsZV9pZCkgJT4lIG9yZGVyZWQob3JkZXJlZF9tb250aHMpLCB5ID0gbWVhbiwgY29sb3VyID0gbWVhbikpICsNCiAgICBnZW9tX3BvaW50KHNpemUgPSAyKSArDQogICAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxvd2VyLCB5bWF4ID0gdXBwZXIpLCB3aWR0aCA9IC4xLCBsaW5ld2lkdGggPSAxLjEpICsNCiAgICB0aGVtZV9idygpICsNCiAgICBsYWJzKHggPSAiICIsDQogICAgICAgICB5ID0gIk3DqWRpYSBkZSBjb250cmF0b3MgcG9yIHBhcmNlaXJvcyIsDQogICAgICAgICB0aXRsZSA9ICdDb21wYXJhw6fDo28gZW50cmUgbcOpZGlhcyBlIHZhcmnDom5jaWFzJywNCiAgICAgICAgIHN1YnRpdGxlID0gJ2NhbXBhbmhhIGRvIGlwaG9uZScsDQogICAgICAgICBjYXB0aW9uID0gIkZvbnRlOiBCRkYgZSBjYW1wYW5oYSBkbyBpcGhvbmUiKSArDQogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwNCiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDEyLCBmYWNlID0gJ2JvbGQnKSwNCiAgICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICdib2xkJyksDQogICAgICAgICAgcGxvdC5jYXB0aW9uID0gIGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpLA0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICdub25lJykgKw0KICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygnaXBob25lJz0iQ29tIGNhbXBhbmhhIiwgJ3NlbV9pcGhvbmUnPSJTZW0gY2FtcGFuaGEiKSkNCiAgDQp9DQpgYGANCg0KDQojIyMgRGV0YWxoZXMgc29icmUgb3MgZ3J1cG9zDQoNCkFvIGJ1Y2FyIGEgbcOpZGlhIGRlIHJldG9ybm8gZG9zIMO6bHRpbW9zIDYgbWVzZXMgZGUgYWxndW5zIHBhcmNlaXJvcywgw6kgcG9zc8OtdmVsIHBlcmNlYmVyIGjDoSBncmFuZGUgdmFyacOibmNpYS4NCg0KQ29tbyBleGVtcGxvLCBzZSBubyBtw6pzIGRlIG1haW8gYSBwcm9kdcOnw6NvIGZvaSBkZSBSJDUwbWlsLCBlLCBubyBtw6pzIGRlIGp1bmhvIFIkMTAwbWlsLCBhIHPDqXJpZSBkZSByZXRvcm5vcyB0cmFyw6EgdW0gYXVtZW50byBkZSAxMDAlLg0KDQpFc3RlIMOpIGZhdG8gcXVlIGltcG9zc2liaWxpdGEgdHJhw6dhciB1bWEgw7puaWNhIHBvbMOtdGljYSBjb21vIGNhbXBhbmhhIChlLmcuIGFjcmVzY2ltbyBkZSAxMCUgbm8gdmFsb3IgcHJvZHV6aWRvKS4NCg0KQSB0YWJlbGEgYWJhaXhvIGFwcmVzZW50YSBvcyByZXRvcm5vcyBkZSA1IHBhcmNlaXJvcywgZSBhIG3DqWRpYSBubyBwZXLDrW9kbyBkZSBmZXZlcmVpcm8gYSBqdW5oby4NCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpvcHRpb25zKHdhcm4gPSAtMSkNCmRmXzEgPC0gZGZfcmV0b3Jub1sxOjUsIF0NCg0KY29sbmFtZXMoZGZfMSkgPC0gYygiRmV2ZXJlaXJvIiwgIk1hcsOnbyIsICJBYnJpbCIsICJNYWlvIiwgIkp1bmhvIiwgIk3DqWRpYSIpDQoNCmRmXzEgJT4lIA0KICBrbml0cjo6a2FibGUoY2FwdGlvbiA9ICdBbW9zdHJhIC0gdGVuZMOqbmNpYSBkZSByZXRvcm5vcyBwb3IgbcOqcyAoMjAyNSknKQ0KDQpgYGANCg0KDQoNCsOAIGVzcXVlcmRhLCBhIGxpbmhhIHJlcHJlc2VudGEgbyBjb21wb3J0YW1lbnRvIGRvcyByZXRvcm5vcyBkZSBwcm9kdcOnw6NvIGRvcyBwYXJjZWlyb3Mgdjg7IMOgIGRpcmV0YSwgY29tbyBkZXZlcmlhbSBzZXIgcGFyYSBxdWUgZm9zc2UgcG9zc8OtdmVsIGNhcHR1cmFyIHVtIHBhZHLDo28gdHJhw6dhciB1bWEgY2FtcGFuaGEgbm8gZm9ybWF0byBkZSBtZXRhIHBlcmNlbnR1YWwgZml4YS4gDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpvcmRlcl9tb250aHMgPC0gYygncmV0X2ZldicsICdyZXRfbWFyJywgJ3JldF9hYnInLCAncmV0X21haScsICdyZXRfanVuJykNCg0KbGluZV8xIDwtIGRmX3JldG9ybm9bMTAwLCAtNl0NCnBpdm90X2xpbmUgPC0gbGluZV8xICU+JSBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm1lcyIsDQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAncmV0b3JubycpDQpwaXZvdF9saW5lJG1lcyA8LSBhcy5mYWN0b3IocGl2b3RfbGluZSRtZXMpICU+JSBvcmRlcmVkKG9yZGVyX21vbnRocykNCg0KcDEgPC0gcGl2b3RfbGluZSAlPiUgZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IG1lcywgeSA9IHJldG9ybm8sIGdyb3VwID0gMSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICB0aGVtZV9saWdodCgpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMTAsIGxpbmV0eXBlID0gJ2Rhc2hlZCcsIGNvbCA9ICdibHVlJykgKw0KICBsYWJzKHkgPSAiUmV0b3JubyAoJSkiLCANCiAgICAgICB4ID0gIk3DqnMiLCANCiAgICAgICB0aXRsZSA9ICJSZXRvcm5vIGNvbSAoYWx0YSkgdmFyacOibmNpYSBuw6NvIGxpbmVhciIsDQogICAgICAgc3VidGl0bGUgPSAiZGFkb3MgcmVhaXMiKSArIA0KICAgIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxMiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gOSwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhY2UgPSAnaXRhbGljJykNCiAgKQ0KDQpgYGANCg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpyZXRvcm5vX2xpbmVhcmVzIDwtIGRhdGEuZnJhbWUoDQogIG1lcyA9IG9yZGVyX21vbnRocywNCiAgcmV0b3JubyA9IGMoLTI1LCAyNSwgLTI1LCAyNSwgLTI1KQ0KKQ0KDQpyZXRvcm5vX2xpbmVhcmVzJG1lcyA8LSBhcy5mYWN0b3IocmV0b3Jub19saW5lYXJlcyRtZXMpICU+JSANCiAgb3JkZXJlZChvcmRlcl9tb250aHMpDQoNCnAyIDwtIHJldG9ybm9fbGluZWFyZXMgJT4lIGdncGxvdChtYXBwaW5nID0gYWVzKHggPSBtZXMsIHkgPSByZXRvcm5vLCBncm91cCA9IDEpKSArIA0KICBnZW9tX2xpbmUoKSArDQogIHRoZW1lX2xpZ2h0KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICdkYXNoZWQnLCBjb2wgPSAnYmx1ZScpICsNCiAgbGFicyh5ID0gIlJldG9ybm8gKCUpIiwgDQogICAgICAgeCA9ICJNw6pzIiwgDQogICAgICAgdGl0bGUgPSAiUmV0b3JubyBjb20gdmFyaWHDp8OjbyBsaW5lYXIiLA0KICAgICAgIHN1YnRpdGxlID0gJ2RhZG9zIHNpbXVsYWRvcycpICsgDQogICAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDEyLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICApDQoNCmBgYA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcuZGltPWMoMTAsNSl9DQoNCnBhcihtZnJvdz1jKDIsIDEpKQ0KcDEgKyBwMg0KcGFyKG1mcm93PWMoMSwgMSkpDQpgYGANCg0KDQoNCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5kaW09YygxMCw1KX0NCg0KDQoNCiMjIyMgRXhwbGljYW5kbyBhIGRpZmVyZW7Dp2EuDQoNCiMjIyMjIFJldG9ybm8gaWRlYWwgKHNpbXVsYWRvKQ0KDQojIFNlIG9zIHJldG9ybm9zIGZvc3NlbSBsaW5lYXJtZW50ZSBkaXN0cmlidcOtZG9zIGhhdmVyaWEgdW0gcGFkcsOjbyBpZGVudGlmaWPDoXZlbCwgcGVybWl0aW5kby1zZSB0cmHDp2FyIHBhcsOibWV0cm9zIHBhcmEgYSBjYW1wYW5oYSBkZSBmb3JtYSBnZW7DqXJpY2EsIGUsIGFvIG1lc21vIHRlbXBvLCBnYXJhbnRpciBhIG1lc21hIHByb2JhYmlsaWRhZGUgw6AgZ3JhbmRlIG1haW9yaWEgZG9zIHBhcmNlaXJvcy4NCiMgDQojIE5lc3RlcyBjYXNvcywgc3Vwb25kbyB1bSByZXRvcm5vIG3DqWRpbyBkZSAyMCUsIHBvZGVyaWEtc2UgYWZpcm1hciwgcG9yIGV4ZW1wbG8sIHF1ZToNCiMgDQojIDEgLSBFbSBhcHJveGltYWRhbWVudGUgNjgsMjYlIGRvcyBjYXNvcywgYSBtw6lkaWEgZGUgcmV0b3JubyBlc3RhcmlhIGVudHJlIDE0JSBlIDI2JS4NCiMgDQojIDIgLSBFbSBhcHJveGltYWRhbWVudGUgOTUuNDQlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIGVzdGFyaWEgZW50cmUgMjYlIGUgMzIlLg0KIyANCiMgMyAtIEVtIGFwcm94aW1hZGFtZW50ZSA5OS43NCUgY2Fzb3MsIGEgbcOpZGlhIGRlIHJldG9ybm8gZXN0YXJpYSBlbnRyZSAzOCUgZSA0NCUuDQoNCmdncGxvdCgpICsgDQogIGdlb21faGlzdG9ncmFtKGFlcyhybm9ybSg1MDApKSwgY29sb3IgPSAnIzAwMDAwMCcsIGZpbGwgPSAnIzAwOTlGOCcsIGFscGhhID0gLjQpICsNCiAgdGhlbWVfYncoKSArIA0KICBsYWJzKHRpdGxlID0gIkRpc3RyaWJ1acOnw6NvIGlkZWFsIiwgDQogICAgICAgc3VidGl0bGUgPSAncXVhbnRpZGFkZSBwb3IgZmFpeGEgZGUgdmFsb3JlcycsDQogICAgICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgICAgeCA9ICJWYWxvcmVzICh0cmFuc2Zvcm1hZG9zKSIsIA0KICAgICAgIHkgPSAiRnJlcXVlbmNpYSIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDE2LCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhY2UgPSAnaXRhbGljJykNCiAgKQ0KDQpgYGANCg0KIyMjIyMgUmV0b3Jub3MgcmVhaXMNCk9zIHJldG9ybm9zIHJlYWlzLCBjb250dWRvLCBkZW1vbnN0cmFtIGdyYW5kZSB2YXJpw6JuY2lhIChkZSAtOTAlIMOgIDMwMDAlKSwgZSBmb3JtYSBuw6NvIGxpbmVhcmUgKHNlbSBwYWRyw6NvIGlkZW50aWZpY8OhdmVsIGUgY29udMOtbnVvKS4NCg0KTWVzbW8gdHJhdGFuZG8gYSBuw6NvLWxpbmVhcmlkYWRlLCBhIGdyYW5kZSB2YXJpw6JuY2lhIGRvcyByZXRvcm5vcyDDqSB1bSBpbXBlZGltZW50byBhaW5kYSBwcmVzZW50ZSBwYXJhIHNlIGZpeGFyIGFwZW5hcyB1bSBsaW1pYXIgcGFyYSB0b2RvcyBvcyBwYXJjZWlyb3MuDQoNCg0KYGBge3IsIGVjaG89RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmRpbT1jKDEwLDUpfQ0KDQptZWRpYSA8LSBtZWFuKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgbmEucm0gPSBUUlVFKQ0KZGVzdmlvIDwtIHNkKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgbmEucm0gPSBUUlVFKQ0KDQoNCnAyIDwtIGdncGxvdCgpICsgDQogIGdlb21faGlzdG9ncmFtKGFlcyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgY29sb3IgPSAnIzAwMDAwMCcsIGZpbGwgPSAnIzZDM0JBQScsIGFscGhhID0gLjQpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gcm91bmQoKGV4cChtZWRpYSkgKyByZXRvcm5vX3NkX2Rlc19sb2d0cmFuc2Zvcm10YXRpb24obWVkaWEsZGVzdmlvKSksIDIpLCBjb2xvciA9ICcjNkMzQkFBJywgbGluZXR5cGUgPSAyKSArDQogIHRoZW1lX2J3KCkgKyANCiAgbGFicyh0aXRsZSA9ICJEaXN0cmlidWnDp8OjbyByZWFsIiwgDQogICAgICAgc3VidGl0bGUgPSAncXVhbnRpZGFkZSBwb3IgZmFpeGFzIGRlIHZhbG9yZXMnLA0KICAgICAgIGNhcHRpb24gPSAnRm9udGU6IEJGRiAoZGlhcyAxOSBhbyAyNSBkb3Mgw7psdGltb3MgNiBtZXNlcyknLA0KICAgICAgIHggPSAiVmFsb3JlcyAodHJhbnNmb3JtYWRvcykiLCANCiAgICAgICB5ID0gIkZyZXF1ZW5jaWEiKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxNiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpDQogICkNCg0KDQoNCiMjIGNhbGN1bGFuZG8gcG9zdcOnw6NvIGRvcyAxMCUgcHJldmlzdG9zDQoNCg0KcDMgPC0gZ2dwbG90KCkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oYWVzKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSksIGNvbG9yID0gJyMwMDAwMDAnLCBmaWxsID0gJyM2QzNCQUEnLCBhbHBoYSA9IC40KSArDQogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IChtZWRpYSArIGRlc3ZpbyksIGNvbG9yID0gJyM2QzNCQUEnLCBsaW5ldHlwZSA9IDIpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gKG1lZGlhIC0gZGVzdmlvKSwgY29sb3IgPSAnIzZDM0JBQScsIGxpbmV0eXBlID0gMikgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnModGl0bGUgPSAiRnJlcXXDqm5jaWEgcmVhbCIsIA0KICAgICAgIHN1YnRpdGxlID0gJ3F1YW50aWRhZGUgcG9yIGZhaXhhcyBkZSB2YWxvcmVzIC0gbG9nLXRyYW5zZm9ybWFkbycsDQogICAgICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgICAgeCA9ICJWYWxvcmVzIHJlYWlzIiwgDQogICAgICAgeSA9ICJGcmVxdWVuY2lhIikgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIiMwMDk5RjgiLCBzaXplID0gMTYsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICApDQoNCnAyICsgcDMNCg0KYGBgDQoNCg0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KDQpvcHRpb25zKHdhcm4gPSAtMSkNCg0KbWVkaWEgPC0gbWVhbihsb2coZGZfcmV0b3JubyRtZWFuX3ZhciksIG5hLnJtID0gVFJVRSkNCmRlc3ZpbyA8LSBzZChsb2coZGZfcmV0b3JubyRtZWFuX3ZhciksIG5hLnJtID0gVFJVRSkNCnBhc3RlKCJFbSBlc2NhbGEgcmVhbCwgYSBtw6lkaWEgw6kgZGUgIiwgcm91bmQoZXhwKG1lZGlhKSwgMiksICIlIGUgbyBkZXN2aW8gw6kgZGUgIiwgcm91bmQocmV0b3Jub19zZF9kZXNfbG9ndHJhbnNmb3JtdGF0aW9uKG1lZGlhLGRlc3ZpbyksIDIpLCAiJSIpDQoNCmBgYA0KDQoNCk5vIGNhc28gZG9zIHBlcmNlaXJvcyBkYSB2OCwgY29uc2lkZXJhbmRvLXNlIG9zIHJldG9ybm9zIHBvc2l0aXZvcywgcG9kZS1zZSBhZmlybWFyIHF1ZToNCg0KVXNhbmRvIG8gc2VndWludGUgcHJvY2VkaW1lbnRvLCBwb2RlbW9zIGFwdXJhciBxdWU6DQoNCg0KMSAtIEVtIGFwcm94aW1hZGFtZW50ZSA1NCUgZG9zIGNhY29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9zIHF1ZSAxMCUNCg0KMiAtIEVtIGFwcm94aW1hZGFtZW50ZSA1MCUgZG9zIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSAyNiw1JQ0KDQozIC0gRW0gYXByb3hpbWFkYW1lbnRlIDE2JSBkb3MgY2Fzb3MsIGEgbcOpZGlhIGRlIHJldG9ybm8gc2Vyw6EgbWFpb3IgMTc2LjIzJS4NCg0KNCAtIEVtIGFwcm94aW1hZGFtZW50ZSAyLDUlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSAzMjUuOTYlLg0KDQo1IC0gRW0gYXByb3hpbWFkYW1lbnRlIDAuMTUlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSA0NzUuNjklLg0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KDQojQSBwcm9iYWJpbGlkYWRlIGFzc29jaWFkYSBhbyByZXRvcm5vIGRlIDEwJSAob3UgbWVub3IpLCDDqSBtdWl0byBiYWl4YSAoY2VyY2EgZGUgMi40MSUpIHwgOTcuNTklIGRvcyByZXRvcm5vcyBzZXLDo28gbWFpb3Jlcy4NCiNBIHByb2JhYmlsaWRhZGUgYXNzb2NpYWRhIGFvIHJldG9ybm8gbcOpZGlvICgyNiUgb3UgbWVub3IpLCDDqSBkZSA1MCUgfCA1MCUgZG9zIHJldG9ybm9zIHNlcsOjbyBtYWlvcmVzLg0KI0EgcHJvYmFiaWxpZGFkZSBhc3NvY2lhZGEgYW8gcmV0b3JubyBkZSAxIGRlc3ZpbyAoMTc2JSBvdSBtZW5vcikgw6kgZGUgODEuNzQlIHwgMTguMjYlIGRvcyByZXRvcm5vcyBzZXLDo28gbWFpb3Jlcw0KYGBgDQoNCg0KIyMjIFN1Z2VzdMOjbyBwYXJhIG5vdmFzIGNhbXBhbmhhcw0KDQpJZGVudGlmaWNhciBncnVwb3MgcXVlIHRlbmhhbSBjYXJhY3RlcsOtc3RpY2FzIGRpZmVyZW50ZXMgZW0gcmVsYcOnw6NvIGFvIHZhbG9yIHByb2R1emlkbywgZSBiYXNlYXIgYSBjYW1wYW5oYSBwYXJhIG8gY3Jlc2NpbWVudG8gZGVudHJvIGRvIGdydXBvLg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQoNCg0Ka21lYW5zX3RyZWluZWQgPC0ga21lYW5zKGxvZyhkZl92YWxvcmVzX2luJG1lYW5fdmFyKSwgY2VudGVycyA9IDUpDQoNCmRmX3ZhbG9yZXNfaW4kY2x1c3RlciA8LSBrbWVhbnNfdHJlaW5lZCRjbHVzdGVyDQoNCg0KDQpgYGANCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCg0KZGZfdmFsb3Jlc19pbg0KDQpkZl92YWxvcmVzX291dCRjbHVzdGVyIDwtIDYNCg0KZGZfdmFsb3JlcyA8LSByYmluZChkZl92YWxvcmVzX2luLCBkZl92YWxvcmVzX291dCkNCg0KYGBgDQoNCg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCg0KcDQgPC0gZ2dwbG90KGRhdGEgPSBkZl92YWxvcmVzW2RmX3ZhbG9yZXMkbWVhbl92YXIgPCAyMDAwMDAwLCBdLCBtYXBwaW5nID0gYWVzKHggPSBtZWFuX3ZhciwgeSA9IGZhY3RvcihjbHVzdGVyKSwgZmlsbCA9IGFzLmZhY3RvcihjbHVzdGVyKSkpICsNCiAgZ2VvbV9ib3hwbG90KCkgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnMoDQogICAgdGl0bGUgPSAnRGlzdHJpYnVpw6fDo28gZGUgdmFsb3JlcyBwb3IgZ3J1cG8nLA0KICAgIHN1YnRpdGxlID0gJ2NsdXN0ZXIgY2FsY3VsYWRvIGNvbSBrbWVhbnMgZSBkYWRvcyBsb2ctdHJhbnNmb3JtYWRvcycsDQogICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgeCA9ICdWYWxvcmVzJywNCiAgICB5ID0gJ0dydXBvcycNCiAgICApICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gJ25vbmUnLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAnIzAwOTlGOCcsIHNpemU9MTYsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICAgIA0KICApDQoNCg0KcDQNCg0KYGBgDQoNCk9zIGdydXBvcyBzw6NvIGZvcm1hZG9zIGxldmFuZG8gZW0gY29uc2lkZXJhw6fDo28gcmVnacO1ZXMgZGUgdmFsb3JlcyBlbSBxdWUgaMOhIG1haW9yIGNvbmNlbnRyYcOnw6NvIGRlIHBhcmNlaXJvcy4NCg0KUG9yIGV4ZW1wbG8sIG5vIGdydXBvIDUsIGjDoSBwYXJjZWlyb3MgZW50cmUgNjBtaWwgZSAyNTBtaWwsIGVudHJldGFuZG8sIDUwJSBkZWxlcyBlc3TDo28gZW50cmUgNjVtaWwgZSAxMzBtaWwsIHNlbmRvIHF1ZSwgYWluZGEgbWFpcyBjb25jZW50cmFkbyBubyB2YWxvciBkZSA5MG1pbC4NCg0KSXNzbyBzaWduaWZpY2EgcXVlIHBvZGVtb3MgYXRpbmdpciB1bSBtYWlvciBuw7ptZXJvIGRlIHBhcmNlaXJvcywgZGVudHJvIGRlc3RhIGZhaXhhLCBzZSBtaXJhcm1vcyBub3MgcGFyY2Vpcm9zIHF1ZSBwcm9kdXplbSBwZXJ0byBkYSBtw6lkaWEsIGUsIGZhemVuZG8tb3MgZWxldmFyIG8gdmFsb3IgcHJvZHV6aWRvLg0KDQoNCkVtIHJlc3VtbywgZXN0YXJlbW9zIGVzdGltdWxhbmRvIGEgbWFpb3IgZnJhw6fDo28gZGUgcGFyY2Vpcm9zIGRlbnRybyBkZXN0YSBmYWl4YSDDoCBidXNjYXIgdW0gdmFsb3IgcXVlLCBkZSBmYXRvLCByZXByZXNlbnRhIHVtIGRlc2FmaW8sIG1hcywgw6kgYmFzdGFudGUgcHJvdsOhdmVsLg0KDQojIyMjIENhcmFjdGVyw61zdGljYXMgZG9zIGdydXBvcw0KYGBge3IsIGVjaG89RkFMU0V9DQoNCiMgZnVuw6fDo28gcGFyYSByZXRvcm5hciBjYXJhY3RlcsOtc3RpY2FzDQp0b3RhbCA9IG5yb3coZGZfdmFsb3Jlc1tkZl92YWxvcmVzJG1lYW5fdmFyIDwgMjAwMDAwMCwgXSkNCiMgbWVkaWRhcyBkZSB0ZW5kw6puY2lhIGNlbnRyYWwNCnJlc3VtbyA8LSBkZl92YWxvcmVzW2RmX3ZhbG9yZXMkbWVhbl92YXIgPCAyMDAwMDAwLCBdICU+JQ0KICBncm91cF9ieShjbHVzdGVyKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIGNvbmNlbnRyYWNhbyA9IHBhc3RlKHJvdW5kKHF1YW50aWxlKG1lYW5fdmFyLCAuMjUpLCAyKSwgIi0iLCByb3VuZChxdWFudGlsZShtZWFuX3ZhciwgLjc1KSwgMikpLA0KICAgIG1lZGlhbmEgPSByb3VuZChxdWFudGlsZShtZWFuX3ZhciwgLjUwKSwgMiksDQogICAgI21pbl9tYXggPSBwYXN0ZShyb3VuZChtaW4obWVhbl92YXIpLCAyKSwiLSIsIHJvdW5kKG1heChtZWFuX3ZhciksIDIpKSwNCiAgICBwcm9wcm9jYW9fZ3J1cG9zID0gcm91bmQobigpIC8gdG90YWwgKiAxMDAsIDIpDQogICkgJT4lIGFycmFuZ2UoZGVzYyhtZWRpYW5hKSkgJT4lIHVuZ3JvdXAoKQ0KDQoNCiMgY29sbmFtZXMocmVzdW1vKSA8LSBjKCJHcnVwbyIsICJDb25jZW50cmHDp8Ojbyg1MCUpIiwgIk1lZGlhIiwgIk3DrW5pbW8gLSBNw6F4aW1vIiwgIlJlcHJlc2VudGF0aXZpZGFkZSIpDQpjb2xuYW1lcyhyZXN1bW8pIDwtIGMoIkdydXBvIiwgIkNvbmNlbnRyYcOnw6NvKDUwJSkiLCAiTWVkaWEiLCAiUmVwcmVzZW50YXRpdmlkYWRlIikNCg0KcmVzdW1vICU+JSBrbml0cjo6a2FibGUoY2FwdGlvbiA9ICJFc3RhdMOtc3RpY2FzIHBvciBncnVwbyIpDQoNCiMgcmVzdW1vDQoNCmBgYA0KDQoNClF1YW50byBtYWlvcmVzIHPDo28gb3MgdmFsb3JlcyBwcm9kdXppZG9zLCBtZW5vcyBwYXJjZWlyb3MgZXN0YXLDo28gcmVwcmVzZW50YWRvcyBwZWxhIGNhbXBhbmhhLiBQb3IgaXNzbywgw6kgY3J1Y2lhbCBkZWZpbmlyIG8gb2JqZXRpdm8gZGEgY2FtcGFuaGEsIGUgZGVwb2lzIGFzIHBvbMOtdGljYXMuDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmdncGxvdChkYXRhID0gcmVzdW1vLCBtYXBwaW5nID0gYWVzKHkgPSBSZXByZXNlbnRhdGl2aWRhZGUsIHggPSBhcy5mYWN0b3IoR3J1cG8pLCBmaWxsID0gYXMuZmFjdG9yKEdydXBvKSkpICsgDQogIGdlb21fY29sKCkgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnMoDQogICAgdGl0bGUgPSAiUXVhbnRpZGFkZSBkZSBwYXJjZWlyb3MiLA0KICAgIHN1YnRpdGxlID0gInF1YW50aWRhZGUgcG9yIGdydXBvIiwNCiAgICBjYXB0aW9uID0gJ0ZvbnRlOiBCRkYgKGRpYXMgMTkgYW8gMjUgZG9zIMO6bHRpbW9zIDYgbWVzZXMpJywNCiAgICB4ID0gJ0dydXBvcycsDQogICAgeSA9ICdSZXByZXNlbnRhdGl2aWRhZGUgKCUpJw0KICAgIA0KICApICsgDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxNiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICdub25lJw0KKQ0KDQoNCmBgYA0KDQoNCkNvbSBiYXNlIG5hIGFtb3N0cmEgY29saGlkYSwgbyBncnVwbyA1IHRlbSBhIG1haW9yIGZhaXhhIGRlIHZhbG9yIChSJCA2NS4wODUsMjggLSBSJCAxMzAuNjI2LDUzKSwgbWFzLCByZXByZXNlbnRhIGFwZW5hcyA4LDg2JSBkb3MgcGFyY2Vpcm9zLg0KDQoNCiMjIyMgRGVmaW5pbmRvIGZhaXhhcw0KDQpBIGNhbXBhbmhhIHBvZGUgc2VyIG1vZGVsYWRhIGRlIGFjb3JkbyBjb20gb3Mgb2JqZXRpdm9zLCBlLCBvYnNlcnZhbmRvIGFzIGNhcmFjdGVyw61zdGljYXMgZG9zIHBhcmNlaXJvcy4NCg0KQWJhaXhvLCBzdWdlc3TDo28gZGUgY2FtcGFuaGEgZm9jYWRhIG5vcyA5MCUgZG9zIHBhcmNlaXJvcyBkYSBhbW9zdHJhIGNvbGhpZGEuDQoNClN1Z2VyZS1zZSBjb20gdmFsb3JlcyBwYXJhIGZhaXhhcywgbyBjb3JyZXNwb25kZW50ZSBhbyB0ZXJjZWlybyBxdWFydGlsIGRlIGNhZGEgZ3J1cG8gKC43NSUpLiANCg0KQXNzaW0sIHByb21vdmVyZW1vcyBvIGF1bWVudG8gZGEgcHJvZHXDp8OjbyBkZW50cm8gZGUgY2FkYSBncnVwby4NCg0KIyMjIyMgRmFpeGFzOg0KDQp8RmFpeGEgfCBWYWxvciB8IFJlcHJlc2VudGF0aXZpZGFkZXwgT2JqZXRpdm8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMTAuNTk2Ljk2fCA3Miw3NiUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSA2bWlsIHBhcmEgcGFyYSAxMCw1bWlsfCANCnwgRmFpeGEgMiB8ICBSJCAyNy4xNzMuMDggfCAxNiw3MSUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSAxNiw1bWlsIHBhcmEgcGFyYSAyN21pbHwNCnwgRmFpeGEgMyB8IFIkIDEzMC42MjYuNTMgfCA4LDg2JSB8IERlc2xvY2FyIGEgbcOpZGlhIGRlIDkwbWlsIHBhcmEgcGFyYSAxMzBtaWx8DQp8IEZhaXhhIDQgfCBSJCA3MDAuMDAwLDAwIHwgMSw2NyUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSA0MDBtaWwgcGFyYSBwYXJhIDcwMG1pbHwNCg0KQXMgZmFpeGFzIHBvZGVtIHNlciBhbHRlcsOhdmVpcyBkZSBhY29yZG8gY29tIG8gb2JqZXRpdm8gZGEgY2FtcGFuaGEuDQoNCiMjIyMjICoqUHJlbWlhw6fDo28gc3VnZXJpZGE6KioNCg0KKlN1cG9zacOnw7VlcyoNCg0KQ29tIGJhc2UgZW0gW2VzdHVkb3MgYW50ZXJpb3Jlc10oaHR0cHM6Ly9ycHVicy5jb20vRmFnbmVyMS8xMjY0NDcyKSwgw6kgcG9zc8OtdmVsIGFmaXJtYXIgKGNvbSA5NSUgZGUgY2VydGV6YSkgcXVlIG8gdmFsb3IgZGUgZW1pc3PDo28gZGFzIHByb3Bvc3RhcyBlc3RhcsOhIGVudHJlIFIkIDExMCwwMCBlIDE1NiwwMC4gU2VuZG8gMTEwLDAwIGEgbW9kYSAodmFsb3IgcXVlIG1haXMgc2UgZGlnaXRhIG5hIHRhYmVsYSwgZSwgY29tbyBtw6lkaWEgMTUzLDIxIC0gT0JTOiBvcyBkYWRvcyBzw6NvIGFzc2ltw6l0cmljb3MpDQoNCg0KTmVzdGEgZmFpeGEgZGUgdmFsb3INCg0KDQoNCnxGYWl4YSB8IFByZW1pYcOnw6NvIHxNZXRhIHwgUGFyY2Vpcm9zIG5hIHByZW1pYcOnw6NvIHwgVmFsb3IgcHJldmlzdG8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMjUwLDAwIHwgUiQgMTAuNTk2Ljk2ICB8IDI5NSB8IFIkIDczLjAwMCwwMCB8IA0KfCBGYWl4YSAyIHwgUiQgNTAwLDAwIHwgUiQgMjcuMTczLjA4IHwgMTM5IHwgUiQgNjkuNTAwLDAwIHwNCnwgRmFpeGEgMyB8IFIkIDEuMDAwLDAwICB8IFIkIDEzMC42MjYuNTMgfCAzMCB8IDMwLjAwMCwwMCB8DQp8IEZhaXhhIDQgfCBSJCAxLjUwMCwwMCAgfCBSJCA3MDAuMDAwLDAwIHwgNSB8IDcuNTAwLDAwIHwNCg0KKkN1c3RvIG3DrW5pbW8gcHJldmlzdG8qOiAqKlIkIDE4MC4wMDAsMDAqKg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyANCiMgcXVhbnRvIGF1bWVudGFyZW1vcyBkZSBmYXR1cmFtZW50byBhIGNhZGEgcGFyY2Vpcm8gcXVlIGNvbnNpZ2EgYXRpbmdpciBhIG1ldGEgZGVudHJvIGRvIHNldSBncnVwbw0KIyANCiMgLS0gZmF6ZXIgdW1hIHJlZ3Jlc3PDo28gbGluZWFyDQojIC0gbW9kZWxhZ2VtDQojIHByZWNpc28gcHJldmVyICh5KSBxdWFsIMOpIG8gdmFsb3IgZ2VyYWRvIGRhZG8gcXVlIG4gKHgpIHF1YW50aWRhZGUgZGUgY29udHJhdG9zDQojIA0KIyBwcmVjaXNvLCBwYXJhIGNhZGEgY2x1c3RlciwgbyB2YWxvciBnZXJhZG8gcGVsbyBwYXJjZWlybyBlIHF1YW50aWRhZGUgZGUgY29udHJhdG9zDQojIA0KIyByZXN1bHRhZDA6IHBhcmEgY2FkYSBjb250cmF0byDDoCBtYWlzLCBwcmV2ZW1vcyB0ZXJlbW9zIHggZGUgbHVjcm8NCiMgDQojIGVzdGltYXRpdmEgw6kgZGUgcXVlIHBhcmEgY2hlZ2FyIGFvIHZhbG9yLCBvIHBhcmNlaXJhIHRlbmhhIHF1ZSBkaWdpdGFyIHggY29udHJhdG9zDQpgYGANCg0KDQoNCiMjIyBBdmFsaWHDp8OjbyBkYSBjYW1wYW5oYSBkbyBpcGhvbmUNCg0KKipPYmpldGl2b3MgZGVjbGFyYWRvcyoqDQoNCipFc3RhIENBTVBBTkhBIHRlbSBwb3Igb2JqZXRpdm8sIG1lZGlhbnRlIGRpc3RyaWJ1acOnw6NvIGRlIHByw6ptaW9zICjigJxQUkVNSUHDh8ODT+KAnSksIGZvbWVudGFyIGEgcHJvZHXDp8OjbyBkZSBGR1RTIG5hcyB0YWJlbGFzIFRVUkJPIGUgQUNFTEVSQSwgcHJvZHV0byBkaXNwb27DrXZlbCBwZWxvIE9SR0FOSVpBRE9SLCBzZWd1bmRvIG9zIGNyaXTDqXJpb3MgZGVmaW5pZG9zIG5lc3RlIHJlZ3VsYW1lbnRvKi4oU0lDKQ0KDQoNCioqVmlnw6puY2lhKioNCjIyLzEwLzIwMjQgYXTDqSBvIGRpYSAzMC8xMS8yMDI0DQoNCioqUGVyw61vZG8gY29tcGFyYWRvKioNCjE2LzA5LzIwMjQgYXTDqSBvIGRpYSAyMS8xMC8yMDI0DQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCiMgY2FycmVnYW5kbyBkYWRvcw0KY2FtcGFuaGEgPC0gcmVhZF9jc3YoInk6L0ZJTkFOQ0VJUk8vRmFnbmVyL1RoYWlzL0dlcmFkb3IgZGUgY2FtcGFuaGFzL2lucHV0X2RhdGEvY2FtcGFuaGFfaXBob25lLmNzdiIpDQphbnRlcmlvciA8LSByZWFkX2NzdigieTovRklOQU5DRUlSTy9GYWduZXIvVGhhaXMvR2VyYWRvciBkZSBjYW1wYW5oYXMvaW5wdXRfZGF0YS9jYW1wYW5oYV9pcGhvbmVfYW50ZXJpb3IuY3N2IikNCg0KDQoNCiMjIFRhbWFuaG8gZGFzIGFtb3N0cmFzDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQojIC0gQXBsaWNhciBvIHRlc3QtdCBkZSAyIGFtb3N0cmFzOiB2YW1vcyBjb21wYXJhciBhIG3DqWRpYSBkZSBjb250cmF0b3MgZGlnaXRhZG9zIG5vIG3DqnMgZGEgY2FtcGFuaGEgY29tIG8gbcOqcyBhbnRlcmlvciwgZSwgcGVuc2FyIGVtIGNvbXBhcmFyIGNvbSBhIG3DqWRpYSBkZSBkaWdpdGHDp8OjbyBkb3Mgw7psdGltb3MgNiBtZXNlcyBhbnRlcmlvcmVzIMOgIGNhbXBhbmhhLg0KIyAtIFZhbGlkYcOnw6NvIGRlIHN1cG9zacOnw7VlcyBlc3RhdMOtc3RpY2FzDQojIC0gT3MgZGFkb3Mgc8OjbyBjb250w61udW9zDQojIC0gQXMgYW1vc3RyYXMgc8OjbyBhbGVhdMOzcmlhcw0KIyAtIEFzIGRlbWFpcyBzdXBvc2nDp8O1ZXMgc2Vyw6NvIHZhbGlkYWRhcyBhYmFpeG8NCiMgTW9kZWxhZ2VtOg0KIyBIMDogTsOjbyBow6EgY29ycmVsYcOnw6NvIGxpbmVhciBlc3RhdGlzdGljYW1lbnRlIHNpZ25pZmljYW50ZSwgYXMgYW1vc3RyYXMgc8OjbyBpbmRlcGVuZGVudGVzLg0KIyBIYTogSMOhIGNvcnJlbGHDp8OjbyBsaW5lYXIgZXN0YXRpc3RpY2FtZW50ZSBzaWduaWZpY2FudGUsIGFzIGFtb3N0cmFzIG7Do28gc8OjbyBpbmRlcGVuZGVudGVzLg0KDQojIHByZXByb2Nlc3NhbWVudG8gY2FtcGFuaGENCmNhbXBhbmhhJGZyZXF1ZW5jaWFfbG9nIDwtIGxvZyhjYW1wYW5oYSRmcmVxdWVuY2lhKQ0KaW5kZXhfc2NhbGVzX2NhbXBhbmhhIDwtIGFicyhzY2FsZShjYW1wYW5oYSRmcmVxdWVuY2lhX2xvZykpID4gMw0KY2FtcGFuaGFfc2VtX291dGxpZXJzIDwtIGNhbXBhbmhhWyFpbmRleF9zY2FsZXNfY2FtcGFuaGEsIF0NCg0KDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQojIHByZXByb2Nlc3NhbWVudG8gYW50ZXJpb3INCmFudGVyaW9yJGZyZXF1ZW5jaWFfbG9nIDwtIGxvZyhhbnRlcmlvciRmcmVxdWVuY2lhKQ0KaW5kZXhfc2NhbGVzX2FudGVyaW9yIDwtIGFicyhzY2FsZShhbnRlcmlvciRmcmVxdWVuY2lhX2xvZykpID4gMw0KYW50ZXJpb3Jfc2VtX291dGxpZXJzIDwtIGFudGVyaW9yWyFpbmRleF9zY2FsZXNfYW50ZXJpb3IsIF0NCg0KDQpgYGANCg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyBOb3JtYWxpZGFkZSAgZSBob21vZ2VpbmVpZGFkZSBkYXMgZGlzdHJpYnVpw6fDtWVzDQoNCg0KDQpjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkIDwtIHNjYWxlKGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZykNCmFudGVyaW9yX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQgPC0gc2NhbGUoYW50ZXJpb3Jfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nKQ0KDQpwYXIobWZyb3cgPSBjKDIsIDIpKQ0KaGlzdChzY2FsZShjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkKSkNCmhpc3Qoc2NhbGUoY2FtcGFuaGFfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCkpDQpib3hwbG90KHNjYWxlKGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQpKQ0KYm94cGxvdChzY2FsZShjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkKSkNCnBhcihtZnJvdyA9IGMoMSwgMSkpDQoNCg0KY2F0KCJIaXN0b2dyYW1hIGRlbW9uc3RyYSBkaXN0cmlidWnDp8OjbyBwcsOzeGltYSDDoCBub3JtYWwsIGUgYm94cGxvdHMgZGVtb25zdGFzIG3DqWRpYSBlIHF1YXJ0aXMgcHLDs3hpbW9zIikNCg0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyBhanVzdGFuZG8gZGltZW5zw7Vlcw0KY2FtcGFuaGFfc2VtX291dGxpZXJzIDwtIGNhbXBhbmhhX3NlbV9vdXRsaWVyc1szNzpucm93KGNhbXBhbmhhX3NlbV9vdXRsaWVycyksIF0NCmFudGVyaW9yX3NlbV9vdXRsaWVycw0KDQpgYGANCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCiMgSW5kZXBlbmTDqm5jaWEgZW50cmUgYXMgYW1vc3RyYXMgLSBjb3JyZWxhw6fDo28gcGVhcnNvbg0KDQpyZXN1bHRfY29yIDwtIGNvci50ZXN0KGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQsIGFudGVyaW9yX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQsIA0KICAgIG1ldGhvZCA9ICdwZWFyc29uJykNCg0KDQpjYXQoIkNvbSBwLXZhbHVlIGRlICIsIHJlc3VsdF9jb3IkcC52YWx1ZSwgIm7Do28gc2UgcmVqZWl0YSBhIGhpcMOzdGVzZSBudWxhLiBDb25maXJtYW5kbyBxdWUgYXMgYW1vc3RyYXMgc8OjbyBpbmRlcGVuZGVudGVzIikNCg0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCiMjIyMgQXBsaWNhbmRvIHRlc3RlIGRlIGhpcMOzdGVzZQ0KIyBIMDogTsOjbyBleGlzdGUgZGlmZXRlbsOnYSBlbnRyZSBvcyAyIGdydXBvcy4gT3MgdmFsb3JlcyBzw6NvIHBhcmVjaWRvcy4NCiMgSGE6IEV4aXN0ZSBkaWZldGVuw6dhIGVudHJlIG9zIDIgZ3J1cG9zLiBPcyB2YWxvcmVzIG7Do28gc8OjbyBwYXJlY2lkb3MuDQoNCnJlc3VsdF90ZXN0dCA8LSB0LnRlc3QoY2FtcGFuaGFfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCwgYW50ZXJpb3Jfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCwgYWx0ZXJuYXRpdmUgPSAnZycpDQoNCg0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCmNhbXBhbmhhX3NlbV9vdXRsaWVycyRzYW1wbGVfaWQgPC0gJ2lwaG9uZScNCmFudGVyaW9yX3NlbV9vdXRsaWVycyRzYW1wbGVfaWQgPC0gJ3NlbV9pcGhvbmUnDQoNCg0KZGZfY29uY2F0IDwtIHJiaW5kKGNhbXBhbmhhX3NlbV9vdXRsaWVyc1ssIGMoInNhbXBsZV9pZCIsICJmcmVxdWVuY2lhX2xvZ19zY2FsZWQiLCAiZnJlcXVlbmNpYSIpXSwgYW50ZXJpb3Jfc2VtX291dGxpZXJzWywgYygic2FtcGxlX2lkIiwgImZyZXF1ZW5jaWFfbG9nX3NjYWxlZCIsICJmcmVxdWVuY2lhIildKQ0KDQpgYGANCg0KDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmNvbXBhcmFuZG9fbWVkaWFzKGRhZG9zID0gZGZfY29uY2F0WywgYygic2FtcGxlX2lkIiwgJ2ZyZXF1ZW5jaWEnKV0pDQoNCmBgYA0KIyMjIyBSZXN1bHRhZG8gdGVzdGUgZGUgaGlww7N0ZXNlICh0ZXN0LXQpDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpyZXN1bHRfdGVzdHQkcC52YWx1ZQ0KYGBgDQoNCkNvbmZvcm1lIHRlc3RlIGRlIGhpcMOzdGVzZSAocC12YWxvciA9IDAuNTI2NyksIMOpIHBvc3PDrXZlbCBhZmlybWFyIChjb20gbsOtdmVsIGRlIGNvbmZpYW7Dp2EgZGUgOTUlKSBxdWUgbsOjbyBob3V2ZSBkaWZlcmVuw6dhIGVzdGF0aXN0aWNhbWVudGUgc2lnbmlmaWNhbnRlIG5vIHZvbHVtZSBtw6lkaW8gZGUgY29udHJhdG9zIGRpZ2l0YWRvcyBwb3IgcGFyY2Vpcm9zLg0KDQpPIGdyw6FmaWNvIGFjaW1hIGUgbyB0ZXN0ZSBkZSBoaXDDs3Rlc2Ugc2UgY29tcGxlbWVudGFtIHBhcmEgZGVtb25zdHJhciBxdWU6DQoNCi0gQSBtw6lkaWEgZGUgY29udHJhdG9zIGRpZ2l0YWRvcyBwb3IgcGFyY2Vpcm9zIG5vIG1lc21vIHBlcsOtb2RvIGFudGVyaW9yIMOgIGNhbXBhbmhhIGVzdMOhIGVudHJlIDc1Lzk1IGNvbnRyYXRvcy4NCg0KLSBBIG3DqWRpYSBkZSBjb250cmF0b3MgZGlnaXRhZG9zIHBvciBwYXJjZWlyb3MgZHVyYW50ZSBhIGNhbXBhbmhhIGVzdMOhIGVudHJlIDg1LzEwNSBjb250cmF0b3MuDQoNClNpZ25pZmljYSBkaXplciBxdWUsIG1lc21vIG9jb3JyZW5kbyB1bSBhdW1lbnRvLCBlc3RlIGF1bWVudG8gcG9kZSBzZXIgYXRyaWJ1w61kbyDDoCB2YXJpw6JuY2lhIG3DqWRpYSAobmF0dXJhbCkgZG8gbsO6bWVybyBkZSBjb250cmF0b3MgZGlnaXRhZG9zIHBvciBwYXJjZWlyb3MuIFNlbmRvIGFzc2ltLCBuYXMgYW1vc3RyYXMgY29tcGFyYWRhcywgYSBjYW1wYW5oYSBkbyBpcGhvbmUgbsOjbyBnZXJvdSBlZmVpdG8gcmVsYXZhbnRlLg0KDQoNCiMjIyBDb25jbHVzw6NvDQoNCkNhbXBhbmhhcyBjb20gbWV0YXMgZGUgcHJvZHXDp8OjbyBhY2ltYSBkb3MgUiQgMTMwLjAwMCwwMCBzw6NvIG11aXRvIGltcHJvdsOhdmVpcyBwYXJhIHF1YXNlIDk4JSBkb3MgcGFyY2Vpcm9zLiBQb3J0YW50bywgc2UgYSBjYW1wYW5oYSB2aXNhIGluY2VudGl2YXIgYSBwcm9kdcOnw6NvIG5hIGdyYW5kZSBtYXNzYSBkZSBwYXJjZWlyb3MsIGFzIG1ldGFzIGRldmVtIHNlciBtZW5vcmVzLg0KDQpPcyBncnVwb3MgYWNpbWEgc8OjbyBzdWdlc3TDtWVzIChlc3R1ZG9zIG1haXMgYXByb2Z1bmRhZG9zIHBvZGVtIHNlciByZWFsaXphZG9zLCB2aXNhbmRvIGRlc3RhY2FyIGNhZGEgdmV6IG1haXMgYXMgZGlmZXJlbsOnYXMgZW50cmUgZWxlcyksIG1hcywgc8OjbyBzdWZpY2llbnRlcyBwYXJhIGRlbW9uc3RyYXIgcXVlIGV4aXN0ZW0gY29uY2VudHJhw6fDtWVzIGRlIHBhcmNlaXJvcyBlbSBhbGd1bWFzIGZhaXhhcyBkZSB2YWxvcmVzLg0KDQpBcyBtZXRhcyBzw6NvIGRlc2VuaGFkYXMgY29tbyB1bSB2YWxvciAncHJvdsOhdmVsJyBwYXJhIGEgb3MgcGFyY2Vpcm9zIGRlbnRybyBkYXMgcmVzcGVjdGl2YXMgZmFpeGFzLCBvIHF1ZSB0b3JuYSBvIGluY2VudGl2byDDoCBwcm9kdcOnw6NvIHVtIG9iamV0aXZvIHBhbHDDoXZlbC4NCg0KQWJhaXhvLCBhIHByZW1pYcOnw6NvIHN1Z2VyaWRhIHBvciBmYWl4YSBkZSB2YWxvciwgZSwgcHJldmlzw6NvIGRlIGludmVzdGltZW50byBtw61uaW1vIGNhbGN1bGFkbyBjb20gYmFzZSBubyBtw6pzIGRlIGp1bGhvLzIwMjUuDQoNCnxGYWl4YSB8IFByZW1pYcOnw6NvIHxNZXRhIHwgUGFyY2Vpcm9zIG5hIHByZW1pYcOnw6NvIHwgVmFsb3IgcHJldmlzdG8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMjUwLDAwIHwgUiQgMTAuNTk2Ljk2ICB8IDI5NSB8IFIkIDczLjAwMCwwMCB8IA0KfCBGYWl4YSAyIHwgUiQgNTAwLDAwIHwgUiQgMjcuMTczLjA4IHwgMTM5IHwgUiQgNjkuNTAwLDAwIHwNCnwgRmFpeGEgMyB8IFIkIDEuMDAwLDAwICB8IFIkIDEzMC42MjYuNTMgfCAzMCB8IDMwLjAwMCwwMCB8DQp8IEZhaXhhIDQgfCBSJCAxLjUwMCwwMCAgfCBSJCA3MDAuMDAwLDAwIHwgNSB8IDcuNTAwLDAwIHwNCg0KKkN1c3RvIG3DrW5pbW8gcHJldmlzdG8qOiAqKlIkIDE4MC4wMDAsMDAqKg0KDQo=