Pré-Copom: Decifrando os próximos passos da Política Monetária

Atividade Econômica

O último dado do IBC-Br revela que a atividade econômica brasileira tem enfraquecido bastante. Atualmente, o índice registra dois meses de quedas consecutivas, após uma alta no início do ano, impulsionada pelo setor agropecuário, devido à supersafra.

Entre os setores analisados, o varejo registrou uma queda de 2,50%, a indústria manteve-se estável, com um crescimento de apenas 0,10%, e os serviços também apresentaram um crescimento moderado, de 0,30%. Ao mesmo tempo, o setor agropecuário teve um bom desempenho, o que contribui para o resultado do PIB, embora em uma escala menor do que a observada no início do ano.

A decisão do Copom de interromper o ciclo de alta vai evidenciar os efeitos dessa política contracionista, mas é esperado que, até o fim do ano, a atividade econômica se mantenha em um ritmo de crescimento moderado.

Mercado de Trabalho

O mercado de trabalho em 2025 apresenta sinais de forte dinamismo. A taxa de desocupação recuou para 5,8%, atingindo o menor patamar da série histórica. Paralelamente, a taxa de desocupação composta e a de subutilização chegaram a 10,4% e 14,2%, respectivamente. A taxa de ocupação alcançou 58,9%, enquanto a informalidade caiu para 37,8%, também configurando uma mínima histórica.

Atualmente, a geração de empregos encontra-se concentrada no segmento formal da economia. O setor da construção, entretanto, apresenta retração, reflexo de sua maior sensibilidade ao atual ciclo de juros elevados. Apesar desse resultado, a perda de dinamismo na construção tem sido parcialmente compensada pela criação de postos de trabalho em setores como serviços e indústria, que se mostram relativamente menos afetados pela atual política monetária.

No que diz respeito à renda, a massa de rendimento efetivo real atingiu R$ 353,17 bilhões, enquanto o rendimento real médio registrou avanço de 3,27% em doze meses, reforçando o quadro de resiliência do mercado de trabalho.

A expectativa, contudo, é que a taxa de desocupação encerre 2025 em 6,5%.

Fiscal

A evolução recente dos indicadores fiscais consolida um cenário de elevada volatilidade e pressões persistentes, com implicações diretas para a condução da política monetária. A trajetória ascendente do endividamento público mantém-se inalterada, com a dívida líquida do setor público atingindo 63,73% do PIB e a dívida bruta do governo geral alcançando 77,55% do PIB em julho de 2025. Esse movimento reflete a combinação de déficits fiscais recorrentes e da elevada carga de juros nominais, reforçando a percepção de deterioração estrutural do quadro fiscal.

A análise do resultado primário evidencia tal fragilidade. No acumulado em doze meses, o setor público consolidado registrou déficits consecutivos, com o resultado primário oscilando de -0,20% em maio para -0,15% em junho e +0,22% em julho. Embora o dado mais recente aponte ligeira melhora, o patamar ainda se mostra insuficiente para inverter a percepção de risco, sobretudo diante da elevada instabilidade dos resultados mensais.

O fluxo mensal confirma a persistência dessa volatilidade. Após superávits expressivos em maio (R$ 33,7 bilhões) e junho (R$ 47,1 bilhões), julho apresentou um déficit significativo de R$ 66,6 bilhões. Essa alternância brusca entre superávits e déficits, ainda que influenciada pela sazonalidade de despesas obrigatórias — como o pagamento de precatórios (despesas judiciais impostas ao governo, que costumam se concentrar em alguns meses) —, revela a dificuldade do setor público em sustentar uma trajetória fiscal consistente.

Inflação

Diante do atual cenário de instabilidade geopolítica, observa-se que diferentes classes de ativos vêm sendo impactadas, gerando reflexos significativos na economia global. Nesse contexto, é esperado que o Banco Central adote uma postura mais cautelosa em suas decisões de política monetária.

Considerando os dados da inflação acumulada em 12 meses que segue acima da meta (5,11% em julho) e seu caráter persistente, a perspectiva predominante é de manutenção do elevado nível da taxa básica de juros, como forma de conter pressões inflacionárias e garantir a convergência da inflação para o centro da meta no médio prazo.

Uma análise dos núcleos de inflação revela que, embora alguns segmentos já apresentem certa desaceleração, como os preços de alimentos e bens industrializados, cuja performance recente vem ficando abaixo das altas observadas em meses anteriores, ainda persistem ressalvas importantes.

O principal ponto de atenção reside no comportamento do grupo de serviços, cuja dinâmica inflacionária é notoriamente mais inercial e resistente. Este segmento continua performando em patamares relativamente aquecidos.

Dessa forma, embora haja alívio em frentes importantes, entende-se o cenário desfavorável à convergência índice geral para a meta estabelecida.

Para mais informações, recomenda-se a leitura do nosso relatório “Análise de conjuntura macroeconômica – prévia da inflação de agosto de 2025”, disponível em: https://rpubs.com/ibmacrobh/1340293

Conclusão

Os dados recentes apontam para uma trajetória de desaceleração da inflação, o que abre espaço para um ambiente mais favorável à política monetária. Ainda assim, o cenário exige otimismo cauteloso: embora os núcleos de inflação mostrem alívio, a persistência em alguns segmentos, como serviços, recomenda prudência. No campo fiscal, a volatilidade dos resultados mensais e o nível elevado do endividamento reforçam a percepção de fragilidade estrutural, o que limita a margem de manobra do governo e exige atenção quanto à sustentabilidade das contas públicas.

A atividade econômica mostra sinais de desaceleração, após o impulso inicial do setor agropecuário no começo do ano. Apesar disso, o mercado de trabalho permanece resiliente, com taxa de desocupação em mínimas históricas e ganhos reais de renda, sustentando o consumo e atenuando parte da perda de dinamismo da economia. No cenário externo, os Estados Unidos caminham para um possível ciclo de cortes de juros, movimento que tende a reduzir a pressão sobre os mercados emergentes e pode oferecer algum espaço adicional para flexibilização monetária no Brasil.

Diante desses fatores, o mais provável é que o BCB adote uma postura prudente, mantendo a cautela diante das incertezas fiscais e inflacionárias, mas reconhecendo que há condições para novos cortes de juros ainda neste ano, caso se confirme a convergência gradual da inflação, a resiliência do mercado de trabalho e a manutenção de um ambiente externo mais favorável.

Fontes Utilizadas

Sites:

BANCO INTER S.A. Comentário econômico – IPCA julho/25: IPCA bem abaixo do esperado. Belo Horizonte: Banco Inter, 12 ago. 2025. Disponível em: https://d9hzq3shxgvwu.cloudfront.net/news/files/a75c6e0f7c33409b9b5d9b85f941cf9c_comentario-economico-ipca-julho25.pdf.

BANCO INTER S.A. Comentário econômico – resultado fiscal junho/2025. Belo Horizonte: Banco Inter, 31 jul. 2025. Disponível em: https://d9hzq3shxgvwu.cloudfront.net/news/files/b0c733c36adc49508f9826f3e440dcef_comentario-economico-fiscal-jun2025.pdf.

BANCO CENTRAL DO BRASIL. Ata da 272ª Reunião do Comitê de Política Monetária – Copom, 29 e 30 de julho de 2025. Brasília: Banco Central do Brasil, 30 jul. 2025. Disponível em: https://www.bcb.gov.br/content/copom/atascopom/Copom272-not20250730272.pdf.

ITAÚ UNIBANCO S.A. Macro Brasil: resultado fiscal – déficit primário de R$ 66,6 bi em julho. São Paulo: Itaú Unibanco, 29 ago. 2025. Disponível em: https://macroattachment.cloud.itau.com.br/attachments/e90ef929-2c02-457f-91a0-678524532d9b/29082025_MACRO_BRASIL_FISCAL.pdf.

ITAÚ UNIBANCO S.A. Macro Brasil: IPCA-15 contrai 0,14 % em agosto. São Paulo: Itaú Unibanco, 26 ago. 2025. Disponível em: https://macroattachment.cloud.itau.com.br/attachments/50017424-b9a0-49f6-822d-92d3cd4f32a6/26082025_MACRO_BRASIL_IPCA-15.pdf.

Bases de dados:

https://www3.bcb.gov.br/sgspub/consultarvalores/telaCvsSelecionarSeries.paint

https://comexstat.mdic.gov.br/pt/home

https://www.ibge.gov.br/estatisticas/economicas/precos-e-custos/9256-indice-nacional-de-precos-ao-consumidor-amplo.html

LS0tCnRpdGxlOiAiUmVsYXTDs3JpbyBQcsOpLUNvcG9tIDI3M8KqIgphdXRob3I6ICJKb8OjbyBNb3Jlbm8gKERpcmV0b3IgZGUgUHJvamV0b3MpLCBNw6FyY2lhIFNhbnRvcyAoQW5hbGlzdGEgTWFjcm8pLCBKb8OjbyBBYmRvIChEaXJldG9yIGRlIE1hcmtldGluZykgLSBBbHVub3MgZGUgQ2nDqm5jaWFzIEVjb27DtG1pY2FzIG5vIElibWVjIEJILiBMdWl6IEdhbWEgKFByb2Zlc3NvciBDb29yZGVuYWRvcikgLSBEb3V0b3IgZW0gRWNvbm9taWEgZSBwcm9mZXNzb3IgZG8gSWJtZWMgQkgiCmRhdGU6ICIwNS8wOS8yMDI1IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZSAKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IGx1bWVuIAogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCmVkaXRvcl9vcHRpb25zOiAKICBtYXJrZG93bjogCiAgICB3cmFwOiBzZW50ZW5jZQotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkKb3B0aW9ucyhyYmNiLnVzZV9jYWNoZSA9IFRSVUUpCmBgYAoKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoInJiY2IiKQppbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCmluc3RhbGwucGFja2FnZXMoImx1YnJpZGF0ZSIpCmluc3RhbGwucGFja2FnZXMoImhpZ2hjaGFydGVyIikKaW5zdGFsbC5wYWNrYWdlcygiem9vIikKYGBgCgojICoqKlByw6ktQ29wb206IERlY2lmcmFuZG8gb3MgcHLDs3hpbW9zIHBhc3NvcyBkYSBQb2zDrXRpY2EgTW9uZXTDoXJpYSoqKgoKIyMgKioqQXRpdmlkYWRlIEVjb27DtG1pY2EqKioKCk8gw7psdGltbyBkYWRvIGRvIElCQy1CciByZXZlbGEgcXVlIGEgYXRpdmlkYWRlIGVjb27DtG1pY2EgYnJhc2lsZWlyYSB0ZW0gZW5mcmFxdWVjaWRvIGJhc3RhbnRlLgpBdHVhbG1lbnRlLCBvIMOtbmRpY2UgcmVnaXN0cmEgZG9pcyBtZXNlcyBkZSBxdWVkYXMgY29uc2VjdXRpdmFzLCBhcMOzcyB1bWEgYWx0YSBubyBpbsOtY2lvIGRvIGFubywgaW1wdWxzaW9uYWRhIHBlbG8gc2V0b3IgYWdyb3BlY3XDoXJpbywgZGV2aWRvIMOgIHN1cGVyc2FmcmEuCgpgYGB7cn0KbGlicmFyeShyYmNiKTsgbGlicmFyeShkcGx5cik7IGxpYnJhcnkobHVicmlkYXRlKTsgbGlicmFyeShoaWdoY2hhcnRlcikKCmNvZGlnb19zZ3MgPC0gMjQzNjMKZGFkb3MgPC0gZ2V0X3Nlcmllcyhjb2RpZ29fc2dzLCBzdGFydF9kYXRlID0gIjIwMjAtMDEtMDEiKSB8PgogIHJlbmFtZShWYWxvciA9ICEhYXMuY2hhcmFjdGVyKGNvZGlnb19zZ3MpKSB8PgogIG11dGF0ZShkYXRlID0gYXMuRGF0ZShkYXRlKSwKICAgICAgICAgSW5kaWNlID0gVmFsb3IgLyBmaXJzdChWYWxvcikgKiAxMDApCgpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpIHw+CiAgaGNfYWRkX3NlcmllcyhkYWRvcywgdHlwZSA9ICJsaW5lIiwgaGNhZXMoeCA9IGRhdGUsIHkgPSByb3VuZChJbmRpY2UsMikpLAogICAgICAgICAgICAgICAgbmFtZSA9ICJJQkMtQnIiLCBjb2xvciA9ICIjMDAyYzVlIikgfD4KICBoY190aXRsZSh0ZXh0ID0gIsONbmRpY2UgZGUgQXRpdmlkYWRlIEVjb27DtG1pY2EgZG8gQmFuY28gQ2VudHJhbCIpIHw+CiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoYmFzZSAxMDApIikpIHw+CiAgaGNfcmFuZ2VTZWxlY3RvcihzZWxlY3RlZCA9IDQpIHw+CiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSB8PgogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gVFJVRSkgfD4KICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAyKSB8PgogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgfD4KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsMjU1LDI1NSwwLjkpIiwKICAgIGJvcmRlckNvbG9yID0gIiNlMGUwZTAiLAogICAgYm9yZGVyV2lkdGggPSAxLAogICAgYm9yZGVyUmFkaXVzID0gNiwKICAgIGl0ZW1TdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLAogICAgaXRlbUhvdmVyU3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMDAwMDAiKQogICkgfD4KICBoY19jYXB0aW9uKHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIiwgYWxpZ24gPSAicmlnaHQiKQpgYGAKCkVudHJlIG9zIHNldG9yZXMgYW5hbGlzYWRvcywgbyB2YXJlam8gcmVnaXN0cm91IHVtYSBxdWVkYSBkZSAyLDUwJSwgYSBpbmTDunN0cmlhIG1hbnRldmUtc2UgZXN0w6F2ZWwsIGNvbSB1bSBjcmVzY2ltZW50byBkZSBhcGVuYXMgMCwxMCUsIGUgb3Mgc2VydmnDp29zIHRhbWLDqW0gYXByZXNlbnRhcmFtIHVtIGNyZXNjaW1lbnRvIG1vZGVyYWRvLCBkZSAwLDMwJS4KQW8gbWVzbW8gdGVtcG8sIG8gc2V0b3IgYWdyb3BlY3XDoXJpbyB0ZXZlIHVtIGJvbSBkZXNlbXBlbmhvLCBvIHF1ZSBjb250cmlidWkgcGFyYSBvIHJlc3VsdGFkbyBkbyBQSUIsIGVtYm9yYSBlbSB1bWEgZXNjYWxhIG1lbm9yIGRvIHF1ZSBhIG9ic2VydmFkYSBubyBpbsOtY2lvIGRvIGFuby4KCkEgZGVjaXPDo28gZG8gQ29wb20gZGUgaW50ZXJyb21wZXIgbyBjaWNsbyBkZSBhbHRhIHZhaSBldmlkZW5jaWFyIG9zIGVmZWl0b3MgZGVzc2EgcG9sw610aWNhIGNvbnRyYWNpb25pc3RhLCBtYXMgw6kgZXNwZXJhZG8gcXVlLCBhdMOpIG8gZmltIGRvIGFubywgYSBhdGl2aWRhZGUgZWNvbsO0bWljYSBzZSBtYW50ZW5oYSBlbSB1bSByaXRtbyBkZSBjcmVzY2ltZW50byBtb2RlcmFkby4KCmBgYHtyfQojIC0tLSBQYWNvdGVzIC0tLQpsaWJyYXJ5KHJiY2IpOyBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShsdWJyaWRhdGUpOyBsaWJyYXJ5KHpvbyk7IGxpYnJhcnkoaGlnaGNoYXJ0ZXIpCgojIC0tLSBTw6lyaWVzIGUgZG93bmxvYWQgLS0tCmNvZGlnb3Nfc2dzIDwtIGMoIlZhcmVqbyIgPSAxNDU1LCAiUElNIiA9IDI5NjA0LCAiU2VydmnDp29zIiA9IDI5NjA2LCAiQWdyb3BlY3XDoXJpYSIgPSAyOTYwMikKbGlzdGEgPC0gZ2V0X3Nlcmllcyhjb2RpZ29zX3Nncywgc3RhcnRfZGF0ZSA9ICIyMDIwLTAxLTAxIikKCiMgLS0tIFByZXBhcmHDp8OjbyBkb3MgZGFkb3MgKGJhc2UgMTAwKSAtLS0KZGFkb3MgPC0gYmluZF9yb3dzKGxhcHBseShuYW1lcyhsaXN0YSksIGZ1bmN0aW9uKG5tKSB7CiAgbGlzdGFbW25tXV0gfD4KICAgIHJlbmFtZShWYWxvciA9IGFsbF9vZihubSkpIHw+CiAgICBtdXRhdGUoU2V0b3IgPSBubSkKfSkpIHw+CiAgbXV0YXRlKGRhdGUgPSBhcy5EYXRlKGRhdGUpKSB8PgogIGdyb3VwX2J5KFNldG9yKSB8PgogIGFycmFuZ2UoZGF0ZSkgfD4KICBtdXRhdGUoCiAgICBWYWxvcl9pbnRlcnAgPSBpZl9lbHNlKFNldG9yID09ICJBZ3JvcGVjdcOhcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmEuYXBwcm94KFZhbG9yLCB4ID0gZGF0ZSwgcnVsZSA9IDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxvciksCiAgICBJbmRpY2UgPSBWYWxvcl9pbnRlcnAgLyBmaXJzdChWYWxvcl9pbnRlcnApICogMTAwCiAgKSB8PgogIHVuZ3JvdXAoKQoKIyAtLS0gSGlnaHN0b2NrOiBncsOhZmljbyBpbnRlcmF0aXZvIGNvbSBsZWdlbmRhIGFqdXN0YWRhIC0tLQpoYyA8LSBoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpIHw+CiAgaGNfdGl0bGUodGV4dCA9ICJFdm9sdcOnw6NvIFNldG9yaWFsIikgfD4KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIlZhcmVqbywgUElNLCBTZXJ2acOnb3MgZSBBZ3JvcGVjdcOhcmlhIOKAlCBqYW4vMjAyMCA9IDEwMCIpIHw+CiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoYmFzZSAxMDApIikpIHw+CiAgaGNfcmFuZ2VTZWxlY3RvcihzZWxlY3RlZCA9IDQpIHw+CiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSB8PgogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gVFJVRSkgfD4KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpIHw+CiAgaGNfcGxvdE9wdGlvbnMoc2VyaWVzID0gbGlzdChjb25uZWN0TnVsbHMgPSBUUlVFLCBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkpKSB8PgogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgdmFsdWVEZWNpbWFscyA9IDIpIHw+CiAgaGNfY29sb3JzKGMoIiMwMDJjNWUiLCAiI2ZlYjcxMiIsICIjNDZiMWUxIiwgIiNhNWE1YTkiKSkgfD4KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsMjU1LDI1NSwwLjkpIiwKICAgIGJvcmRlckNvbG9yID0gIiNlMGUwZTAiLAogICAgYm9yZGVyV2lkdGggPSAxLAogICAgYm9yZGVyUmFkaXVzID0gNiwKICAgIGl0ZW1TdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLAogICAgaXRlbUhvdmVyU3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMDAwMDAiKQogICkKCmZvciAobm0gaW4gdW5pcXVlKGRhZG9zJFNldG9yKSkgewogIGRmIDwtIGZpbHRlcihkYWRvcywgU2V0b3IgPT0gbm0pCiAgaGMgPC0gaGMgfD4KICAgIGhjX2FkZF9zZXJpZXMoCiAgICAgIGRhdGEgPSBkZiwKICAgICAgdHlwZSA9ICJsaW5lIiwKICAgICAgaGNhZXMoeCA9IGRhdGUsIHkgPSByb3VuZChJbmRpY2UsIDIpKSwKICAgICAgbmFtZSA9IG5tLAogICAgICBzaG93SW5MZWdlbmQgPSBUUlVFCiAgICApCn0KCmhjIHw+CiAgaGNfY2FwdGlvbih0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIsIGFsaWduID0gInJpZ2h0IikKYGBgCgojIyAqKipNZXJjYWRvIGRlIFRyYWJhbGhvKioqCgpPIG1lcmNhZG8gZGUgdHJhYmFsaG8gZW0gMjAyNSBhcHJlc2VudGEgc2luYWlzIGRlIGZvcnRlIGRpbmFtaXNtby4KQSB0YXhhIGRlIGRlc29jdXBhw6fDo28gcmVjdW91IHBhcmEgNSw4JSwgYXRpbmdpbmRvIG8gbWVub3IgcGF0YW1hciBkYSBzw6lyaWUgaGlzdMOzcmljYS4KUGFyYWxlbGFtZW50ZSwgYSB0YXhhIGRlIGRlc29jdXBhw6fDo28gY29tcG9zdGEgZSBhIGRlIHN1YnV0aWxpemHDp8OjbyBjaGVnYXJhbSBhIDEwLDQlIGUgMTQsMiUsIHJlc3BlY3RpdmFtZW50ZS4KQSB0YXhhIGRlIG9jdXBhw6fDo28gYWxjYW7Dp291IDU4LDklLCBlbnF1YW50byBhIGluZm9ybWFsaWRhZGUgY2FpdSBwYXJhIDM3LDglLCB0YW1iw6ltIGNvbmZpZ3VyYW5kbyB1bWEgbcOtbmltYSBoaXN0w7NyaWNhLgoKQXR1YWxtZW50ZSwgYSBnZXJhw6fDo28gZGUgZW1wcmVnb3MgZW5jb250cmEtc2UgY29uY2VudHJhZGEgbm8gc2VnbWVudG8gZm9ybWFsIGRhIGVjb25vbWlhLgpPIHNldG9yIGRhIGNvbnN0cnXDp8OjbywgZW50cmV0YW50bywgYXByZXNlbnRhIHJldHJhw6fDo28sIHJlZmxleG8gZGUgc3VhIG1haW9yIHNlbnNpYmlsaWRhZGUgYW8gYXR1YWwgY2ljbG8gZGUganVyb3MgZWxldmFkb3MuCkFwZXNhciBkZXNzZSByZXN1bHRhZG8sIGEgcGVyZGEgZGUgZGluYW1pc21vIG5hIGNvbnN0cnXDp8OjbyB0ZW0gc2lkbyBwYXJjaWFsbWVudGUgY29tcGVuc2FkYSBwZWxhIGNyaWHDp8OjbyBkZSBwb3N0b3MgZGUgdHJhYmFsaG8gZW0gc2V0b3JlcyBjb21vIHNlcnZpw6dvcyBlIGluZMO6c3RyaWEsIHF1ZSBzZSBtb3N0cmFtIHJlbGF0aXZhbWVudGUgbWVub3MgYWZldGFkb3MgcGVsYSBhdHVhbCBwb2zDrXRpY2EgbW9uZXTDoXJpYS4KCk5vIHF1ZSBkaXogcmVzcGVpdG8gw6AgcmVuZGEsIGEgbWFzc2EgZGUgcmVuZGltZW50byBlZmV0aXZvIHJlYWwgYXRpbmdpdSBSXCQgMzUzLDE3IGJpbGjDtWVzLCBlbnF1YW50byBvIHJlbmRpbWVudG8gcmVhbCBtw6lkaW8gcmVnaXN0cm91IGF2YW7Dp28gZGUgMywyNyUgZW0gZG96ZSBtZXNlcywgcmVmb3LDp2FuZG8gbyBxdWFkcm8gZGUgcmVzaWxpw6puY2lhIGRvIG1lcmNhZG8gZGUgdHJhYmFsaG8uCgpBIGV4cGVjdGF0aXZhLCBjb250dWRvLCDDqSBxdWUgYSB0YXhhIGRlIGRlc29jdXBhw6fDo28gZW5jZXJyZSAyMDI1IGVtIDYsNSUuCgpgYGB7cn0KbGlicmFyeShyYmNiKTsgbGlicmFyeShkcGx5cik7IGxpYnJhcnkobHVicmlkYXRlKTsgbGlicmFyeShoaWdoY2hhcnRlcikKCmNvZGlnb3MgPC0gYygiUGVzc29hcyBPY3VwYWRhcyIgPSAyNDM3OSwgIlBlc3NvYXMgRGVzb2N1cGFkYXMiID0gMjQzODApCmxpc3RhIDwtIGdldF9zZXJpZXMoY29kaWdvcywgc3RhcnRfZGF0ZSA9ICIyMDIwLTAxLTAxIikKCmRhZG9zIDwtIGJpbmRfcm93cyhsYXBwbHkobmFtZXMobGlzdGEpLCBmdW5jdGlvbihubSkgewogIGxpc3RhW1tubV1dIHw+CiAgICByZW5hbWUoVmFsb3IgPSBhbGxfb2Yobm0pKSB8PgogICAgbXV0YXRlKFNlcmllID0gbm0pCn0pKSB8PgogIG11dGF0ZShkYXRlID0gYXMuRGF0ZShkYXRlKSkgfD4KICBncm91cF9ieShTZXJpZSkgfD4KICBhcnJhbmdlKGRhdGUpIHw+CiAgbXV0YXRlKEluZGljZSA9IFZhbG9yIC8gZmlyc3QoVmFsb3IpICogMTAwKSB8PgogIHVuZ3JvdXAoKQoKaGMgPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSB8PgogIGhjX3RpdGxlKHRleHQgPSAiTWVyY2FkbyBkZSBUcmFiYWxobyDigJQgT2N1cGFkb3MgeCBEZXNvY3VwYWRvcyIpIHw+CiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoYmFzZSAxMDApIikpIHw+CiAgaGNfcmFuZ2VTZWxlY3RvcihzZWxlY3RlZCA9IDQpIHw+CiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSB8PgogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gVFJVRSkgfD4KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpIHw+CiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCB2YWx1ZURlY2ltYWxzID0gMikgfD4KICBoY19jb2xvcnMoYygiIzAwMmM1ZSIsICIjZmViNzEyIikpIHw+CiAgaGNfbGVnZW5kKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsCiAgICBhbGlnbiA9ICJjZW50ZXIiLAogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLAogICAgYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LDI1NSwyNTUsMC45KSIsCiAgICBib3JkZXJDb2xvciA9ICIjZTBlMGUwIiwKICAgIGJvcmRlcldpZHRoID0gMSwKICAgIGJvcmRlclJhZGl1cyA9IDYsCiAgICBpdGVtU3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKSwKICAgIGl0ZW1Ib3ZlclN0eWxlID0gbGlzdChjb2xvciA9ICIjMDAwMDAwIikKICApCgpmb3IgKG5tIGluIHVuaXF1ZShkYWRvcyRTZXJpZSkpIHsKICBkZiA8LSBmaWx0ZXIoZGFkb3MsIFNlcmllID09IG5tKQogIGhjIDwtIGhjIHw+CiAgICBoY19hZGRfc2VyaWVzKGRmLCB0eXBlID0gImxpbmUiLCBoY2Flcyh4ID0gZGF0ZSwgeSA9IHJvdW5kKEluZGljZSwyKSksIG5hbWUgPSBubSkKfQoKaGMgfD4KICBoY19jYXB0aW9uKHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIiwgYWxpZ24gPSAicmlnaHQiKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHJiY2IpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KHpvbykKbGlicmFyeShoaWdoY2hhcnRlcikKCiMgMSkgU8OpcmllcyBubyBTR1MKY29kaWdvc19zZ3MgPC0gYygKICAiSW5mbGHDp8OjbyIgPSAxNjE5LAogICJTYWzDoXJpbyBNw61uaW1vIiA9IDI0MzgwCikKCiMgMikgQmFpeGFyIHPDqXJpZXMKbGlzdGFfZGFkb3MgPC0gZ2V0X3Nlcmllcyhjb2RpZ29zX3Nncywgc3RhcnRfZGF0ZSA9ICIyMDIwLTAxLTAxIikKCiMgMykgVW5pZmljYXIgZSBwcmVwYXJhciAoYmFzZSAxMDApCmRhZG9zIDwtIGJpbmRfcm93cyhsYXBwbHkobmFtZXMobGlzdGFfZGFkb3MpLCBmdW5jdGlvbihub21lKSB7CiAgbGlzdGFfZGFkb3NbW25vbWVdXSB8PgogICAgcmVuYW1lKFZhbG9yID0gYWxsX29mKG5vbWUpKSB8PgogICAgbXV0YXRlKFNlcmllID0gbm9tZSkKfSkpIHw+CiAgbXV0YXRlKGRhdGUgPSBhcy5EYXRlKGRhdGUpKSB8PgogIGdyb3VwX2J5KFNlcmllKSB8PgogIGFycmFuZ2UoZGF0ZSkgfD4KICBtdXRhdGUoSW5kaWNlID0gVmFsb3IgLyBmaXJzdChWYWxvcikgKiAxMDApIHw+CiAgdW5ncm91cCgpCgojIDQpIEhpZ2hzdG9jayBpbnRlcmF0aXZvCmhjIDwtIGhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgfD4KICBoY190aXRsZSh0ZXh0ID0gIkluZmxhw6fDo28geCBTYWzDoXJpbyBNw61uaW1vIOKAlCBiYXNlIDEwMCAoamFuLzIwMjAgPSAxMDApIikgfD4KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIiIpIHw+CiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoYmFzZSAxMDApIikpIHw+CiAgaGNfcmFuZ2VTZWxlY3RvcihzZWxlY3RlZCA9IDQpIHw+CiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSB8PgogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gVFJVRSkgfD4KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpIHw+CiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCB2YWx1ZURlY2ltYWxzID0gMikgfD4KICBoY19wbG90T3B0aW9ucyhzZXJpZXMgPSBsaXN0KGNvbm5lY3ROdWxscyA9IFRSVUUpKSB8PgogIGhjX2NvbG9ycyhjKCIjMDAyYzVlIiwgIiNmZWI3MTIiKSkgfD4KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsMjU1LDI1NSwwLjkpIiwKICAgIGJvcmRlckNvbG9yID0gIiNlMGUwZTAiLAogICAgYm9yZGVyV2lkdGggPSAxLAogICAgYm9yZGVyUmFkaXVzID0gNiwKICAgIGl0ZW1TdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLAogICAgaXRlbUhvdmVyU3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMDAwMDAiKQogICkgfD4KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpCgojIDUpIEFkaWNpb25hciBhcyBzw6lyaWVzCmZvciAobm0gaW4gdW5pcXVlKGRhZG9zJFNlcmllKSkgewogIGRmIDwtIGZpbHRlcihkYWRvcywgU2VyaWUgPT0gbm0pCiAgaGMgPC0gaGMgfD4KICAgIGhjX2FkZF9zZXJpZXMoCiAgICAgIGRhdGEgPSBkZiwKICAgICAgdHlwZSA9ICJsaW5lIiwKICAgICAgaGNhZXMoeCA9IGRhdGUsIHkgPSByb3VuZChJbmRpY2UsIDIpKSwKICAgICAgbmFtZSA9IG5tCiAgICApCn0KCmhjCmBgYAoKIyMgKioqRmlzY2FsKioqCgpBIGV2b2x1w6fDo28gcmVjZW50ZSBkb3MgaW5kaWNhZG9yZXMgZmlzY2FpcyBjb25zb2xpZGEgdW0gY2Vuw6FyaW8gZGUgZWxldmFkYSB2b2xhdGlsaWRhZGUgZSBwcmVzc8O1ZXMgcGVyc2lzdGVudGVzLCBjb20gaW1wbGljYcOnw7VlcyBkaXJldGFzIHBhcmEgYSBjb25kdcOnw6NvIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhLgpBIHRyYWpldMOzcmlhIGFzY2VuZGVudGUgZG8gZW5kaXZpZGFtZW50byBww7pibGljbyBtYW50w6ltLXNlIGluYWx0ZXJhZGEsIGNvbSBhIGTDrXZpZGEgbMOtcXVpZGEgZG8gc2V0b3IgcMO6YmxpY28gYXRpbmdpbmRvIDYzLDczJSBkbyBQSUIgZSBhIGTDrXZpZGEgYnJ1dGEgZG8gZ292ZXJubyBnZXJhbCBhbGNhbsOnYW5kbyA3Nyw1NSUgZG8gUElCIGVtIGp1bGhvIGRlIDIwMjUuCkVzc2UgbW92aW1lbnRvIHJlZmxldGUgYSBjb21iaW5hw6fDo28gZGUgZMOpZmljaXRzIGZpc2NhaXMgcmVjb3JyZW50ZXMgZSBkYSBlbGV2YWRhIGNhcmdhIGRlIGp1cm9zIG5vbWluYWlzLCByZWZvcsOnYW5kbyBhIHBlcmNlcMOnw6NvIGRlIGRldGVyaW9yYcOnw6NvIGVzdHJ1dHVyYWwgZG8gcXVhZHJvIGZpc2NhbC4KCkEgYW7DoWxpc2UgZG8gcmVzdWx0YWRvIHByaW3DoXJpbyBldmlkZW5jaWEgdGFsIGZyYWdpbGlkYWRlLgpObyBhY3VtdWxhZG8gZW0gZG96ZSBtZXNlcywgbyBzZXRvciBww7pibGljbyBjb25zb2xpZGFkbyByZWdpc3Ryb3UgZMOpZmljaXRzIGNvbnNlY3V0aXZvcywgY29tIG8gcmVzdWx0YWRvIHByaW3DoXJpbyBvc2NpbGFuZG8gZGUgLTAsMjAlIGVtIG1haW8gcGFyYSAtMCwxNSUgZW0ganVuaG8gZSArMCwyMiUgZW0ganVsaG8uCkVtYm9yYSBvIGRhZG8gbWFpcyByZWNlbnRlIGFwb250ZSBsaWdlaXJhIG1lbGhvcmEsIG8gcGF0YW1hciBhaW5kYSBzZSBtb3N0cmEgaW5zdWZpY2llbnRlIHBhcmEgaW52ZXJ0ZXIgYSBwZXJjZXDDp8OjbyBkZSByaXNjbywgc29icmV0dWRvIGRpYW50ZSBkYSBlbGV2YWRhIGluc3RhYmlsaWRhZGUgZG9zIHJlc3VsdGFkb3MgbWVuc2Fpcy4KCk8gZmx1eG8gbWVuc2FsIGNvbmZpcm1hIGEgcGVyc2lzdMOqbmNpYSBkZXNzYSB2b2xhdGlsaWRhZGUuCkFww7NzIHN1cGVyw6F2aXRzIGV4cHJlc3Npdm9zIGVtIG1haW8gKFJcJCAzMyw3IGJpbGjDtWVzKSBlIGp1bmhvIChSXCQgNDcsMSBiaWxow7VlcyksIGp1bGhvIGFwcmVzZW50b3UgdW0gZMOpZmljaXQgc2lnbmlmaWNhdGl2byBkZSBSXCQgNjYsNiBiaWxow7Vlcy4KRXNzYSBhbHRlcm7Dom5jaWEgYnJ1c2NhIGVudHJlIHN1cGVyw6F2aXRzIGUgZMOpZmljaXRzLCBhaW5kYSBxdWUgaW5mbHVlbmNpYWRhIHBlbGEgc2F6b25hbGlkYWRlIGRlIGRlc3Blc2FzIG9icmlnYXTDs3JpYXMg4oCUIGNvbW8gbyBwYWdhbWVudG8gZGUgcHJlY2F0w7NyaW9zIChkZXNwZXNhcyBqdWRpY2lhaXMgaW1wb3N0YXMgYW8gZ292ZXJubywgcXVlIGNvc3R1bWFtIHNlIGNvbmNlbnRyYXIgZW0gYWxndW5zIG1lc2VzKSDigJQsIHJldmVsYSBhIGRpZmljdWxkYWRlIGRvIHNldG9yIHDDumJsaWNvIGVtIHN1c3RlbnRhciB1bWEgdHJhamV0w7NyaWEgZmlzY2FsIGNvbnNpc3RlbnRlLgoKYGBge3J9CmxpYnJhcnkocmJjYikKbGlicmFyeShkcGx5cikKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShsdWJyaWRhdGUpCmxpYnJhcnkocHVycnIpCmxpYnJhcnkoem9vKQpgYGAKCmBgYHtyfQpkYXRhX2luaWNpYWwgPC0gYXMuRGF0ZSgiMjAwNi0xMi0wMSIpCmRhdGFfZmluYWwgICA8LSBTeXMuRGF0ZSgpCgpzZXJpZXMgPC0gbGlzdCgKICBkaXZfbGlxdWlkYV9waWIgICA9IDQ1MTMsCiAgZGl2X2JydXRhX3BpYiAgICAgPSAxMzc2MiwKICBwcmltYXJpb18xMm1fcGliICA9IDU3OTMsCiAgcHJpbWFyaW9fbWVuc2FsX1IgPSA0NjQ5CikKCmRhZG9zX2xpc3QgPC0gbWFwKHNlcmllcywgfmdldF9zZXJpZXMoLngsIHN0YXJ0X2RhdGUgPSBkYXRhX2luaWNpYWwsIGVuZF9kYXRlID0gZGF0YV9maW5hbCkpCgpkYWRvcyA8LSByZWR1Y2UoCiAgZGFkb3NfbGlzdCwKICB+bGVmdF9qb2luKC54LCAueSwgYnkgPSAiZGF0ZSIpLAogIC5pbml0ID0gZGF0YS5mcmFtZShkYXRlID0gZGFkb3NfbGlzdFtbMV1dJGRhdGUpCikgJT4lCiAgcmVuYW1lKAogICAgRGl2aWRhX0xpcXVpZGFfUElCICAgPSBgNDUxM2AsCiAgICBEaXZpZGFfQnJ1dGFfUElCICAgICA9IGAxMzc2MmAsCiAgICBQcmltYXJpb18xMm1fUElCICAgICA9IGA1NzkzYCwKICAgIFByaW1hcmlvX01lbnNhbF9SbWkgID0gYDQ2NDlgCiAgKSAlPiUKICBhcnJhbmdlKGRhdGUpICU+JQogIG11dGF0ZSgKICAgIFByaW1hcmlvX01lbnNhbF9SYmkgPSBQcmltYXJpb19NZW5zYWxfUm1pIC8gLTEwMDAgICMgUiQgYmlsaMO1ZXMKICApCmBgYAoKYGBge3J9CmhjX2RpdmlkYXMgPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGFkb3MsICJsaW5lIiwgaGNhZXMoeCA9IGRhdGUsIHkgPSBEaXZpZGFfTGlxdWlkYV9QSUIpLAogICAgbmFtZSA9ICJEw612aWRhIEzDrXF1aWRhIiwgY29sb3IgPSAiI2ZlYjcxMiIsIHlBeGlzID0gMAogICkgJT4lCiAgaGNfYWRkX3NlcmllcygKICAgIGRhZG9zLCAibGluZSIsIGhjYWVzKHggPSBkYXRlLCB5ID0gRGl2aWRhX0JydXRhX1BJQiksCiAgICBuYW1lID0gIkTDrXZpZGEgQnJ1dGEiLCBjb2xvciA9ICIjMDIwMjNjIiwgeUF4aXMgPSAwCiAgKSAlPiUKICBoY195QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICIlIGRvIFBJQiIpLAogICAgICAgICAgIG9wcG9zaXRlID0gRkFMU0UsCiAgICAgICAgICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOiwuMWZ9IikpICU+JQogIGhjX3hBeGlzKHR5cGUgPSAiZGF0ZXRpbWUiKSAlPiUKICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIGNyb3NzaGFpcnMgPSBUUlVFLCB2YWx1ZURlY2ltYWxzID0gMSwKICAgICAgICAgICAgIHBvaW50Rm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Q0Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55OiwuMWZ9JTwvYj48YnIvPicpICU+JQogIGhjX3RpdGxlKHRleHQgPSAiRMOtdmlkYSBMw61xdWlkYSB2cyBEw612aWRhIEJydXRhICglIGRvIFBJQikg4oCUIFNldG9yIFDDumJsaWNvIENvbnNvbGlkYWRvIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9IHBhc3RlKCJQZXLDrW9kbzoiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQobWluKGRhZG9zJGRhdGUpLCAiJWIvJVkiKSwgIi0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQobWF4KGRhZG9zJGRhdGUpLCAiJWIvJVkiKSkpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIikgJT4lCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKHNlbGVjdGVkID0gNCkgJT4lCiAgaGNfbGVnZW5kKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsCiAgICBhbGlnbiA9ICJjZW50ZXIiLAogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLAogICAgYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LDI1NSwyNTUsMC45KSIsCiAgICBib3JkZXJDb2xvciA9ICIjZTBlMGUwIiwKICAgIGJvcmRlcldpZHRoID0gMSwKICAgIGJvcmRlclJhZGl1cyA9IDYsCiAgICBpdGVtU3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKSwKICAgIGl0ZW1Ib3ZlclN0eWxlID0gbGlzdChjb2xvciA9ICIjMDAwMDAwIikKICApCgpoY19kaXZpZGFzCmBgYAoKYGBge3J9CmhjX3ByaW1hcmlvX21lbnNhbCA8LSBoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYWRvcywgImNvbHVtbiIsIGhjYWVzKHggPSBkYXRlLCB5ID0gUHJpbWFyaW9fTWVuc2FsX1JiaSksCiAgICBuYW1lID0gIlJlc3VsdGFkbyBQcmltw6FyaW8gKFIkIGJpbGjDtWVzKSIsCiAgICBjb2xvciA9ICIjMDIwMjNjIiwgeUF4aXMgPSAwCiAgKSAlPiUKICBoY195QXhpcygKICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlIkIEJpbGjDtWVzIiksCiAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOiwuMGZ9IiksCiAgICBwbG90TGluZXMgPSBsaXN0KGxpc3QodmFsdWUgPSAwLCBjb2xvciA9ICIjZmViNzEyIiwgd2lkdGggPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hTdHlsZSA9ICJzaG9ydGRvdCIsIHpJbmRleCA9IDUpKQogICkgJT4lCiAgaGNfeEF4aXModHlwZSA9ICJkYXRldGltZSIpICU+JQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgY3Jvc3NoYWlycyA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAxLAogICAgICAgICAgICAgcG9pbnRGb3JtYXQgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPlx1MjVDRjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+UiQge3BvaW50Lnk6LC4xZn0gYmk8L2I+PGJyLz4nKSAlPiUKICBoY190aXRsZSh0ZXh0ID0gIlJlc3VsdGFkbyBQcmltw6FyaW8g4oCUIG1lbnNhbCAoUiQpIOKAlCBTZXRvciBQw7pibGljbyBDb25zb2xpZGFkbyIpICU+JQogIGhjX3N1YnRpdGxlKHRleHQgPSBwYXN0ZSgiUGVyw61vZG86IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG1pbihkYWRvcyRkYXRlKSwgIiViLyVZIiksICItIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG1heChkYWRvcyRkYXRlKSwgIiViLyVZIikpKSAlPiUKICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfcmFuZ2VTZWxlY3RvcihzZWxlY3RlZCA9IDQpICU+JQogIGhjX2xlZ2VuZCgKICAgIGVuYWJsZWQgPSBUUlVFLAogICAgbGF5b3V0ID0gImhvcml6b250YWwiLAogICAgYWxpZ24gPSAiY2VudGVyIiwKICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwKICAgIGJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwyNTUsMjU1LDAuOSkiLAogICAgYm9yZGVyQ29sb3IgPSAiI2UwZTBlMCIsCiAgICBib3JkZXJXaWR0aCA9IDEsCiAgICBib3JkZXJSYWRpdXMgPSA2LAogICAgaXRlbVN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IiksCiAgICBpdGVtSG92ZXJTdHlsZSA9IGxpc3QoY29sb3IgPSAiIzAwMDAwMCIpCiAgKQoKaGNfcHJpbWFyaW9fbWVuc2FsCmBgYAoKYGBge3J9CmhjX3ByaW1hcmlvXzEybV9waWIgPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGFkb3MsICJsaW5lIiwgaGNhZXMoeCA9IGRhdGUsIHkgPSBQcmltYXJpb18xMm1fUElCKSwKICAgIG5hbWUgPSAiUmVzdWx0YWRvIFByaW3DoXJpbyAoMTJtKSIsCiAgICBjb2xvciA9ICIjMDIwMjNjIiwgeUF4aXMgPSAwCiAgKSAlPiUKICBoY195QXhpcygKICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIiUgZG8gUElCIiksCiAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOiwuMmZ9IiksCiAgICBwbG90TGluZXMgPSBsaXN0KGxpc3QodmFsdWUgPSAwLCBjb2xvciA9ICIjZmViNzEyIiwgd2lkdGggPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hTdHlsZSA9ICJzaG9ydGRvdCIsIHpJbmRleCA9IDUpKQogICkgJT4lCiAgaGNfeEF4aXModHlwZSA9ICJkYXRldGltZSIpICU+JQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgY3Jvc3NoYWlycyA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAyLAogICAgICAgICAgICAgcG9pbnRGb3JtYXQgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPlx1MjVDRjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnk6LC4yZn0lPC9iPjxici8+JykgJT4lCiAgaGNfdGl0bGUodGV4dCA9ICJSZXN1bHRhZG8gUHJpbcOhcmlvICglIGRvIFBJQikg4oCUIFNldG9yIFDDumJsaWNvIENvbnNvbGlkYWRvIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9IHBhc3RlKCJQZXLDrW9kbzoiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQobWluKGRhZG9zJGRhdGUpLCAiJWIvJVkiKSwgIi0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQobWF4KGRhZG9zJGRhdGUpLCAiJWIvJVkiKSkpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIikgJT4lCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKHNlbGVjdGVkID0gNCkgJT4lCiAgaGNfbGVnZW5kKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsCiAgICBhbGlnbiA9ICJjZW50ZXIiLAogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLAogICAgYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LDI1NSwyNTUsMC45KSIsCiAgICBib3JkZXJDb2xvciA9ICIjZTBlMGUwIiwKICAgIGJvcmRlcldpZHRoID0gMSwKICAgIGJvcmRlclJhZGl1cyA9IDYsCiAgICBpdGVtU3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKSwKICAgIGl0ZW1Ib3ZlclN0eWxlID0gbGlzdChjb2xvciA9ICIjMDAwMDAwIikKICApCgpoY19wcmltYXJpb18xMm1fcGliCmBgYAoKIyMgKioqSW5mbGHDp8OjbyoqKgoKRGlhbnRlIGRvIGF0dWFsIGNlbsOhcmlvIGRlIGluc3RhYmlsaWRhZGUgZ2VvcG9sw610aWNhLCBvYnNlcnZhLXNlIHF1ZSBkaWZlcmVudGVzIGNsYXNzZXMgZGUgYXRpdm9zIHbDqm0gc2VuZG8gaW1wYWN0YWRhcywgZ2VyYW5kbyByZWZsZXhvcyBzaWduaWZpY2F0aXZvcyBuYSBlY29ub21pYSBnbG9iYWwuCk5lc3NlIGNvbnRleHRvLCDDqSBlc3BlcmFkbyBxdWUgbyBCYW5jbyBDZW50cmFsIGFkb3RlIHVtYSBwb3N0dXJhIG1haXMgY2F1dGVsb3NhIGVtIHN1YXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhLgoKQ29uc2lkZXJhbmRvIG9zIGRhZG9zIGRhIGluZmxhw6fDo28gYWN1bXVsYWRhIGVtIDEyIG1lc2VzIHF1ZSBzZWd1ZSBhY2ltYSBkYSBtZXRhICg1LDExJSBlbSBqdWxobykgZSBzZXUgY2Fyw6F0ZXIgcGVyc2lzdGVudGUsIGEgcGVyc3BlY3RpdmEgcHJlZG9taW5hbnRlIMOpIGRlIG1hbnV0ZW7Dp8OjbyBkbyBlbGV2YWRvIG7DrXZlbCBkYSB0YXhhIGLDoXNpY2EgZGUganVyb3MsIGNvbW8gZm9ybWEgZGUgY29udGVyIHByZXNzw7VlcyBpbmZsYWNpb27DoXJpYXMgZSBnYXJhbnRpciBhIGNvbnZlcmfDqm5jaWEgZGEgaW5mbGHDp8OjbyBwYXJhIG8gY2VudHJvIGRhIG1ldGEgbm8gbcOpZGlvIHByYXpvLgoKYGBge3J9CmxpYnJhcnkocmJjYikKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShkcGx5cikKbGlicmFyeSh6b28pCmxpYnJhcnkocHVycnIpCgojIDEuIEJhaXhhciBJUENBIG1lbnNhbCBlIGNhbGN1bGFyIDEyIG1lc2VzCmlwY2EgPC0gcmJjYjo6Z2V0X3Nlcmllcyg0MzMsIHN0YXJ0X2RhdGUgPSAiMjAxOS0wMS0wMSIpICU+JQogIHJlbmFtZShpcGNhID0gYDQzM2ApICU+JQogIGFycmFuZ2UoZGF0ZSkgJT4lCiAgbXV0YXRlKGlwY2FfMTJtID0gcm9sbHN1bXIoaXBjYSwgayA9IDEyLCBmaWxsID0gTkEpKQoKIyAyLiBDcmlhciBtZXRhcyBtYW51YWlzICgyMDE5IGEgMjAyNSkKbWV0YV9tYW51YWwgPC0gZGF0YS5mcmFtZSgKICBkYXRlID0gYXMuRGF0ZShjKCIyMDE5LTAxLTAxIiwgIjIwMjAtMDEtMDEiLCAiMjAyMS0wMS0wMSIsICIyMDIyLTAxLTAxIiwKICAgICAgICAgICAgICAgICAgICIyMDIzLTAxLTAxIiwgIjIwMjQtMDEtMDEiLCAiMjAyNS0wMS0wMSIpKSwKICBtZXRhID0gYyg0LjI1LCA0LjAwLCAzLjc1LCAzLjUwLCAzLjI1LCAzLjAwLCAzLjAwKQopCgojIDMuIEV4cGFuZGlyIG1ldGEgcGFyYSB0b2RhcyBhcyBkYXRhcyBkYSBzw6lyaWUgSVBDQQpkYWRvcyA8LSBpcGNhICU+JQogIHNlbGVjdChkYXRlLCBpcGNhXzEybSkgJT4lCiAgbGVmdF9qb2luKG1ldGFfbWFudWFsLCBieSA9ICJkYXRlIikgJT4lCiAgdGlkeXI6OmZpbGwobWV0YSwgLmRpcmVjdGlvbiA9ICJkb3duIikgJT4lCiAgbXV0YXRlKGxpbWl0ZV9zdXAgPSBtZXRhICsgMS41LAogICAgICAgICBsaW1pdGVfaW5mID0gbWV0YSAtIDEuNSkKCiMgRmlsdHJhciBhcGVuYXMgYSBwYXJ0aXIgZGUgMjAyMApkYWRvcyA8LSBkYWRvcyAlPiUgZmlsdGVyKGRhdGUgPj0gYXMuRGF0ZSgiMjAyMC0wMS0wMSIpKSAlPiUgbmEub21pdCgpCgojIDQuIENyaWFyIGdyw6FmaWNvIEhpZ2hjaGFydGVyCmhpZ2hjaGFydCgpICU+JQogIGhjX2NoYXJ0KHR5cGUgPSAibGluZSIpICU+JQogIGhjX3NpemUoaGVpZ2h0ID0gNTAwLCB3aWR0aCA9IDgwMCkgJT4lCiAgCiAgIyBGYWl4YSBkYSBtZXRhICjDoXJlYSBzb21icmVhZGEpCiAgaGNfYWRkX3NlcmllcyhkYWRvcywgdHlwZSA9ICJhcmVhcmFuZ2UiLCAKICAgICAgICAgICAgICAgIGhjYWVzKHggPSBkYXRlLCBsb3cgPSBsaW1pdGVfaW5mLCBoaWdoID0gbGltaXRlX3N1cCksCiAgICAgICAgICAgICAgICBuYW1lID0gIkZhaXhhIGRhIE1ldGEgKMKxMS41JSkiLCAKICAgICAgICAgICAgICAgIGNvbG9yID0gImxpZ2h0eWVsbG93IiwKICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gMC4zLAogICAgICAgICAgICAgICAgbGluZVdpZHRoID0gMCwKICAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwKICAgICAgICAgICAgICAgIGVuYWJsZU1vdXNlVHJhY2tpbmcgPSBGQUxTRSkgJT4lCiAgCiAgIyBJbmZsYcOnw6NvIGFjdW11bGFkYSAxMiBtZXNlcwogIGhjX2FkZF9zZXJpZXMoZGFkb3MsIHR5cGUgPSAibGluZSIsIAogICAgICAgICAgICAgICAgaGNhZXMoeCA9IGRhdGUsIHkgPSBpcGNhXzEybSksCiAgICAgICAgICAgICAgICBuYW1lID0gIkluZmxhw6fDo28gYWN1bXVsYWRhICgxMm0pIiwgCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjMDAyQzVFIiwKICAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwKICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IDIpICU+JQogIAogICMgTWV0YSBkbyBCQ0IKICBoY19hZGRfc2VyaWVzKGRhZG9zLCB0eXBlID0gImxpbmUiLCAKICAgICAgICAgICAgICAgIGhjYWVzKHggPSBkYXRlLCB5ID0gbWV0YSksCiAgICAgICAgICAgICAgICBuYW1lID0gIk1ldGEgZG8gQkNCIiwgCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjRkVCNzEyIiwKICAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwKICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IDIsCiAgICAgICAgICAgICAgICBkYXNoU3R5bGUgPSAiU29saWQiKSAlPiUKICAKICAjIExpbWl0ZSBTdXBlcmlvcgogIGhjX2FkZF9zZXJpZXMoZGFkb3MsIHR5cGUgPSAibGluZSIsIAogICAgICAgICAgICAgICAgaGNhZXMoeCA9IGRhdGUsIHkgPSBsaW1pdGVfc3VwKSwKICAgICAgICAgICAgICAgIG5hbWUgPSAiTGltaXRlIFN1cGVyaW9yIiwgCiAgICAgICAgICAgICAgICBjb2xvciA9ICJncmF5IiwKICAgICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwKICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IDEsCiAgICAgICAgICAgICAgICBkYXNoU3R5bGUgPSAiRGFzaCIpICU+JQogIAogICMgTGltaXRlIEluZmVyaW9yCiAgaGNfYWRkX3NlcmllcyhkYWRvcywgdHlwZSA9ICJsaW5lIiwgCiAgICAgICAgICAgICAgICBoY2Flcyh4ID0gZGF0ZSwgeSA9IGxpbWl0ZV9pbmYpLAogICAgICAgICAgICAgICAgbmFtZSA9ICJMaW1pdGUgSW5mZXJpb3IiLCAKICAgICAgICAgICAgICAgIGNvbG9yID0gImdyYXkiLAogICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpLAogICAgICAgICAgICAgICAgbGluZVdpZHRoID0gMSwKICAgICAgICAgICAgICAgIGRhc2hTdHlsZSA9ICJEYXNoIikgJT4lCiAgCiAgIyBUw610dWxvcyBlIGNvbmZpZ3VyYcOnw7VlcwogIGhjX3RpdGxlKHRleHQgPSAiSW5mbGHDp8OjbyBhY3VtdWxhZGEgKDEybSkgdnMgTWV0YSIpICU+JQogIGhjX3N1YnRpdGxlKHRleHQgPSAiIikgJT4lCiAgaGNfeEF4aXModHlwZSA9ICJkYXRldGltZSIsIHRpdGxlID0gbGlzdCh0ZXh0ID0gIkFubyIpKSAlPiUKICBoY195QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICIlIGFvIGFubyIpLAogICAgICAgICAgIHBsb3RMaW5lcyA9IGxpc3QoCiAgICAgICAgICAgICBsaXN0KHZhbHVlID0gMCwgY29sb3IgPSAiYmxhY2siLCB3aWR0aCA9IDEsIHpJbmRleCA9IDUpCiAgICAgICAgICAgKSkgJT4lCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwiKSAlPiUKICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsMjU1LDI1NSwwLjkpIiwKICAgIGJvcmRlckNvbG9yID0gIiNlMGUwZTAiLAogICAgYm9yZGVyV2lkdGggPSAxLAogICAgYm9yZGVyUmFkaXVzID0gNiwKICAgIGl0ZW1TdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLAogICAgaXRlbUhvdmVyU3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMDAwMDAiKQogICkgJT4lCiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCAKICAgICAgICAgICAgIGNyb3NzaGFpcnMgPSBUUlVFLAogICAgICAgICAgICAgdmFsdWVEZWNpbWFscyA9IDIsCiAgICAgICAgICAgICB2YWx1ZVN1ZmZpeCA9ICIgJSIsCiAgICAgICAgICAgICBwb2ludEZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNUNGPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX0gJTwvYj48YnIvPicpICU+JQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfcGxvdE9wdGlvbnMoc2VyaWVzID0gbGlzdChjb25uZWN0TnVsbHMgPSBUUlVFKSkKYGBgCgpVbWEgYW7DoWxpc2UgZG9zIG7DumNsZW9zIGRlIGluZmxhw6fDo28gcmV2ZWxhIHF1ZSwgZW1ib3JhIGFsZ3VucyBzZWdtZW50b3MgasOhIGFwcmVzZW50ZW0gY2VydGEgZGVzYWNlbGVyYcOnw6NvLCBjb21vIG9zIHByZcOnb3MgZGUgYWxpbWVudG9zIGUgYmVucyBpbmR1c3RyaWFsaXphZG9zLCBjdWphIHBlcmZvcm1hbmNlIHJlY2VudGUgdmVtIGZpY2FuZG8gYWJhaXhvIGRhcyBhbHRhcyBvYnNlcnZhZGFzIGVtIG1lc2VzIGFudGVyaW9yZXMsIGFpbmRhIHBlcnNpc3RlbSByZXNzYWx2YXMgaW1wb3J0YW50ZXMuCgpPIHByaW5jaXBhbCBwb250byBkZSBhdGVuw6fDo28gcmVzaWRlIG5vIGNvbXBvcnRhbWVudG8gZG8gZ3J1cG8gZGUgc2VydmnDp29zLCBjdWphIGRpbsOibWljYSBpbmZsYWNpb27DoXJpYSDDqSBub3RvcmlhbWVudGUgbWFpcyBpbmVyY2lhbCBlIHJlc2lzdGVudGUuCkVzdGUgc2VnbWVudG8gY29udGludWEgcGVyZm9ybWFuZG8gZW0gcGF0YW1hcmVzIHJlbGF0aXZhbWVudGUgYXF1ZWNpZG9zLgoKRGVzc2EgZm9ybWEsIGVtYm9yYSBoYWphIGFsw612aW8gZW0gZnJlbnRlcyBpbXBvcnRhbnRlcywgZW50ZW5kZS1zZSBvIGNlbsOhcmlvIGRlc2Zhdm9yw6F2ZWwgw6AgY29udmVyZ8OqbmNpYSDDrW5kaWNlIGdlcmFsIHBhcmEgYSBtZXRhIGVzdGFiZWxlY2lkYS4KClBhcmEgbWFpcyBpbmZvcm1hw6fDtWVzLCByZWNvbWVuZGEtc2UgYSBsZWl0dXJhIGRvIG5vc3NvIHJlbGF0w7NyaW8g4oCcQW7DoWxpc2UgZGUgY29uanVudHVyYSBtYWNyb2Vjb27DtG1pY2Eg4oCTIHByw6l2aWEgZGEgaW5mbGHDp8OjbyBkZSBhZ29zdG8gZGUgMjAyNeKAnSwgZGlzcG9uw612ZWwgZW06IDxodHRwczovL3JwdWJzLmNvbS9pYm1hY3JvYmgvMTM0MDI5Mz4KCmBgYHtyfQojIENhcnJlZ2FyIHBhY290ZXMKbGlicmFyeShyYmNiKQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHB1cnJyKQoKIyBCdXNjYXIgYXMgc8OpcmllcyBkbyBCQ0IKZGZfSVBDQSA8LSByYmNiOjpnZXRfc2VyaWVzKDQzMywgc3RhcnRfZGF0ZSA9ICIyMDAwLTAxLTAxIikKZGZfRVgzIDwtIHJiY2I6OmdldF9zZXJpZXMoMjc4MzksIHN0YXJ0X2RhdGUgPSAiMjAwMC0wMS0wMSIpCmRmX0VYMiA8LSByYmNiOjpnZXRfc2VyaWVzKDI3ODM4LCBzdGFydF9kYXRlID0gIjIwMDAtMDEtMDEiKQpkZl9FWDEgPC0gcmJjYjo6Z2V0X3NlcmllcygxNjEyMSwgc3RhcnRfZGF0ZSA9ICIyMDAwLTAxLTAxIikKZGZfRVgwIDwtIHJiY2I6OmdldF9zZXJpZXMoMTE0MjcsIHN0YXJ0X2RhdGUgPSAiMjAyMC0wMS0wMSIpICAjIEVzdGEgY29tZcOnYSBtYWlzIHJlY2VudGVtZW50ZQoKIyBSZW5vbWVhciBhcyBjb2x1bmFzCm5hbWVzKGRmX0lQQ0EpIDwtIGMoImRhdGEiLCAiSVBDQSIpCm5hbWVzKGRmX0VYMykgPC0gYygiZGF0YSIsICJFWDMiKQpuYW1lcyhkZl9FWDIpIDwtIGMoImRhdGEiLCAiRVgyIikKbmFtZXMoZGZfRVgxKSA8LSBjKCJkYXRhIiwgIkVYMSIpCm5hbWVzKGRmX0VYMCkgPC0gYygiZGF0YSIsICJFWDAiKQoKIyBKdW50YXIgb3MgZGFkb3MgcHJvZ3Jlc3NpdmFtZW50ZQpkZl9hbmFsaXNlIDwtIGRmX0lQQ0EgJT4lCiAgZnVsbF9qb2luKGRmX0VYMywgYnkgPSAiZGF0YSIpICU+JQogIGZ1bGxfam9pbihkZl9FWDIsIGJ5ID0gImRhdGEiKSAlPiUKICBmdWxsX2pvaW4oZGZfRVgxLCBieSA9ICJkYXRhIikgJT4lCiAgZnVsbF9qb2luKGRmX0VYMCwgYnkgPSAiZGF0YSIpICU+JQogIGFycmFuZ2UoZGF0YSkKCiMgR3LDoWZpY28KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19zaXplKGhlaWdodCA9IDUwMCwgd2lkdGggPSA4MDApICU+JQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGRmX2FuYWxpc2UsIHR5cGUgPSAibGluZSIsIGhjYWVzKHggPSBkYXRhLCB5ID0gSVBDQSksIAogICAgICAgICAgICAgICAgbmFtZSA9ICJJUENBIENoZWlvIiwgY29sb3IgPSAiIzAyMDIzQyIpICU+JQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGRmX2FuYWxpc2UsIHR5cGUgPSAibGluZSIsIGhjYWVzKHggPSBkYXRhLCB5ID0gRVgzKSwgCiAgICAgICAgICAgICAgICBuYW1lID0gIkVYMyIsIGNvbG9yID0gIiNGRUI3MTIiKSAlPiUKICBoY19hZGRfc2VyaWVzKGRhdGEgPSBkZl9hbmFsaXNlLCB0eXBlID0gImxpbmUiLCBoY2Flcyh4ID0gZGF0YSwgeSA9IEVYMiksIAogICAgICAgICAgICAgICAgbmFtZSA9ICJFWDIiLCBjb2xvciA9ICIjYTZhNmE2IikgJT4lCiAgaGNfYWRkX3NlcmllcyhkYXRhID0gZGZfYW5hbGlzZSwgdHlwZSA9ICJsaW5lIiwgaGNhZXMoeCA9IGRhdGEsIHkgPSBFWDEpLCAKICAgICAgICAgICAgICAgIG5hbWUgPSAiRVgxIiwgY29sb3IgPSAiIzQ2QjFlMSIpICU+JQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGRmX2FuYWxpc2UsIHR5cGUgPSAibGluZSIsIGhjYWVzKHggPSBkYXRhLCB5ID0gRVgwKSwgCiAgICAgICAgICAgICAgICBuYW1lID0gIkVYMCIsIGNvbG9yID0gImJsdWUiKSAlPiUKICBoY190aXRsZSh0ZXh0ID0gIklQQ0EgQ2hlaW8gZSBOw7pjbGVvcyBkZSBpbmZsYcOnw6NvIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICIiKSAlPiUKICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfdG9vbHRpcCgKICAgIHNoYXJlZCA9IFRSVUUsIAogICAgY3Jvc3NoYWlycyA9IFRSVUUsCiAgICB2YWx1ZURlY2ltYWxzID0gMiwKICAgIHBvaW50Rm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Q0Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55fSAlPC9iPjxici8+JywKICAgIHZhbHVlU3VmZml4ID0gIiAlIgogICkgJT4lCiAgaGNfeUF4aXMoCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJQZXJjZW50dWFsICglKSIpLAogICAgb3Bwb3NpdGUgPSBGQUxTRQogICkgJT4lCiAgaGNfeEF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiRGF0YSIpKSAlPiUKICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsMjU1LDI1NSwwLjkpIiwKICAgIGJvcmRlckNvbG9yID0gIiNlMGUwZTAiLAogICAgYm9yZGVyV2lkdGggPSAxLAogICAgYm9yZGVyUmFkaXVzID0gNiwKICAgIGl0ZW1TdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpLAogICAgaXRlbUhvdmVyU3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMDAwMDAiKQogICkKYGBgCgojIyAqKipDb25jbHVzw6NvKioqCgpPcyBkYWRvcyByZWNlbnRlcyBhcG9udGFtIHBhcmEgdW1hIHRyYWpldMOzcmlhIGRlIGRlc2FjZWxlcmHDp8OjbyBkYSBpbmZsYcOnw6NvLCBvIHF1ZSBhYnJlIGVzcGHDp28gcGFyYSB1bSBhbWJpZW50ZSBtYWlzIGZhdm9yw6F2ZWwgw6AgcG9sw610aWNhIG1vbmV0w6FyaWEuCkFpbmRhIGFzc2ltLCBvIGNlbsOhcmlvIGV4aWdlIG90aW1pc21vIGNhdXRlbG9zbzogZW1ib3JhIG9zIG7DumNsZW9zIGRlIGluZmxhw6fDo28gbW9zdHJlbSBhbMOtdmlvLCBhIHBlcnNpc3TDqm5jaWEgZW0gYWxndW5zIHNlZ21lbnRvcywgY29tbyBzZXJ2acOnb3MsIHJlY29tZW5kYSBwcnVkw6puY2lhLgpObyBjYW1wbyBmaXNjYWwsIGEgdm9sYXRpbGlkYWRlIGRvcyByZXN1bHRhZG9zIG1lbnNhaXMgZSBvIG7DrXZlbCBlbGV2YWRvIGRvIGVuZGl2aWRhbWVudG8gcmVmb3LDp2FtIGEgcGVyY2Vww6fDo28gZGUgZnJhZ2lsaWRhZGUgZXN0cnV0dXJhbCwgbyBxdWUgbGltaXRhIGEgbWFyZ2VtIGRlIG1hbm9icmEgZG8gZ292ZXJubyBlIGV4aWdlIGF0ZW7Dp8OjbyBxdWFudG8gw6Agc3VzdGVudGFiaWxpZGFkZSBkYXMgY29udGFzIHDDumJsaWNhcy4KCkEgYXRpdmlkYWRlIGVjb27DtG1pY2EgbW9zdHJhIHNpbmFpcyBkZSBkZXNhY2VsZXJhw6fDo28sIGFww7NzIG8gaW1wdWxzbyBpbmljaWFsIGRvIHNldG9yIGFncm9wZWN1w6FyaW8gbm8gY29tZcOnbyBkbyBhbm8uCkFwZXNhciBkaXNzbywgbyBtZXJjYWRvIGRlIHRyYWJhbGhvIHBlcm1hbmVjZSByZXNpbGllbnRlLCBjb20gdGF4YSBkZSBkZXNvY3VwYcOnw6NvIGVtIG3DrW5pbWFzIGhpc3TDs3JpY2FzIGUgZ2FuaG9zIHJlYWlzIGRlIHJlbmRhLCBzdXN0ZW50YW5kbyBvIGNvbnN1bW8gZSBhdGVudWFuZG8gcGFydGUgZGEgcGVyZGEgZGUgZGluYW1pc21vIGRhIGVjb25vbWlhLgpObyBjZW7DoXJpbyBleHRlcm5vLCBvcyBFc3RhZG9zIFVuaWRvcyBjYW1pbmhhbSBwYXJhIHVtIHBvc3PDrXZlbCBjaWNsbyBkZSBjb3J0ZXMgZGUganVyb3MsIG1vdmltZW50byBxdWUgdGVuZGUgYSByZWR1emlyIGEgcHJlc3PDo28gc29icmUgb3MgbWVyY2Fkb3MgZW1lcmdlbnRlcyBlIHBvZGUgb2ZlcmVjZXIgYWxndW0gZXNwYcOnbyBhZGljaW9uYWwgcGFyYSBmbGV4aWJpbGl6YcOnw6NvIG1vbmV0w6FyaWEgbm8gQnJhc2lsLgoKRGlhbnRlIGRlc3NlcyBmYXRvcmVzLCBvIG1haXMgcHJvdsOhdmVsIMOpIHF1ZSBvIEJDQiBhZG90ZSB1bWEgcG9zdHVyYSBwcnVkZW50ZSwgbWFudGVuZG8gYSBjYXV0ZWxhIGRpYW50ZSBkYXMgaW5jZXJ0ZXphcyBmaXNjYWlzIGUgaW5mbGFjaW9uw6FyaWFzLCBtYXMgcmVjb25oZWNlbmRvIHF1ZSBow6EgY29uZGnDp8O1ZXMgcGFyYSBub3ZvcyBjb3J0ZXMgZGUganVyb3MgYWluZGEgbmVzdGUgYW5vLCBjYXNvIHNlIGNvbmZpcm1lIGEgY29udmVyZ8OqbmNpYSBncmFkdWFsIGRhIGluZmxhw6fDo28sIGEgcmVzaWxpw6puY2lhIGRvIG1lcmNhZG8gZGUgdHJhYmFsaG8gZSBhIG1hbnV0ZW7Dp8OjbyBkZSB1bSBhbWJpZW50ZSBleHRlcm5vIG1haXMgZmF2b3LDoXZlbC4KCiMjIyBGb250ZXMgVXRpbGl6YWRhcwoKKioqU2l0ZXM6KioqCgpCQU5DTyBJTlRFUiBTLkEuIENvbWVudMOhcmlvIGVjb27DtG1pY28g4oCTIElQQ0EganVsaG8vMjU6IElQQ0EgYmVtIGFiYWl4byBkbyBlc3BlcmFkby4KQmVsbyBIb3Jpem9udGU6IEJhbmNvIEludGVyLCAxMiBhZ28uCjIwMjUuCkRpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9kOWh6cTNzaHhndnd1LmNsb3VkZnJvbnQubmV0L25ld3MvZmlsZXMvYTc1YzZlMGY3YzMzNDA5YjliNWQ5Yjg1Zjk0MWNmOWNfY29tZW50YXJpby1lY29ub21pY28taXBjYS1qdWxobzI1LnBkZj4uCgpCQU5DTyBJTlRFUiBTLkEuIENvbWVudMOhcmlvIGVjb27DtG1pY28g4oCTIHJlc3VsdGFkbyBmaXNjYWwganVuaG8vMjAyNS4KQmVsbyBIb3Jpem9udGU6IEJhbmNvIEludGVyLCAzMSBqdWwuIDIwMjUuCkRpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9kOWh6cTNzaHhndnd1LmNsb3VkZnJvbnQubmV0L25ld3MvZmlsZXMvYjBjNzMzYzM2YWRjNDk1MDhmOTgyNmYzZTQ0MGRjZWZfY29tZW50YXJpby1lY29ub21pY28tZmlzY2FsLWp1bjIwMjUucGRmPi4KCkJBTkNPIENFTlRSQUwgRE8gQlJBU0lMLiBBdGEgZGEgMjcywqogUmV1bmnDo28gZG8gQ29taXTDqiBkZSBQb2zDrXRpY2EgTW9uZXTDoXJpYSDigJMgQ29wb20sIDI5IGUgMzAgZGUganVsaG8gZGUgMjAyNS4KQnJhc8OtbGlhOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCwgMzAganVsLiAyMDI1LgpEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vd3d3LmJjYi5nb3YuYnIvY29udGVudC9jb3BvbS9hdGFzY29wb20vQ29wb20yNzItbm90MjAyNTA3MzAyNzIucGRmPi4KCklUQcOaIFVOSUJBTkNPIFMuQS4gTWFjcm8gQnJhc2lsOiByZXN1bHRhZG8gZmlzY2FsIOKAkyBkw6lmaWNpdCBwcmltw6FyaW8gZGUgUlwkIDY2LDYgYmkgZW0ganVsaG8uClPDo28gUGF1bG86IEl0YcO6IFVuaWJhbmNvLCAyOSBhZ28uCjIwMjUuCkRpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9tYWNyb2F0dGFjaG1lbnQuY2xvdWQuaXRhdS5jb20uYnIvYXR0YWNobWVudHMvZTkwZWY5MjktMmMwMi00NTdmLTkxYTAtNjc4NTI0NTMyZDliLzI5MDgyMDI1X01BQ1JPX0JSQVNJTF9GSVNDQUwucGRmPi4KCklUQcOaIFVOSUJBTkNPIFMuQS4gTWFjcm8gQnJhc2lsOiBJUENBLTE1IGNvbnRyYWkgMCwxNCAlIGVtIGFnb3N0by4KU8OjbyBQYXVsbzogSXRhw7ogVW5pYmFuY28sIDI2IGFnby4KMjAyNS4KRGlzcG9uw612ZWwgZW06IDxodHRwczovL21hY3JvYXR0YWNobWVudC5jbG91ZC5pdGF1LmNvbS5ici9hdHRhY2htZW50cy81MDAxNzQyNC1iOWEwLTQ5ZjYtODIyZC05MmQzY2Q0ZjMyYTYvMjYwODIwMjVfTUFDUk9fQlJBU0lMX0lQQ0EtMTUucGRmPi4KCioqKkJhc2VzIGRlIGRhZG9zOioqKgoKPGh0dHBzOi8vd3d3My5iY2IuZ292LmJyL3Nnc3B1Yi9jb25zdWx0YXJ2YWxvcmVzL3RlbGFDdnNTZWxlY2lvbmFyU2VyaWVzLnBhaW50PgoKPGh0dHBzOi8vY29tZXhzdGF0Lm1kaWMuZ292LmJyL3B0L2hvbWU+Cgo8aHR0cHM6Ly93d3cuaWJnZS5nb3YuYnIvZXN0YXRpc3RpY2FzL2Vjb25vbWljYXMvcHJlY29zLWUtY3VzdG9zLzkyNTYtaW5kaWNlLW5hY2lvbmFsLWRlLXByZWNvcy1hby1jb25zdW1pZG9yLWFtcGxvLmh0bWw+Cg==