1: Introdução

É um fato que a população mundial está envelhecendo, continentes inteiros como a Europa está sendo impactados por essa mudança demográfica, decorrente décadas de mudanças estruturais na sociedade que também geram impacto na conjuntura econômica. O Brasil não diverge do problema, atualmente a população brasileira sofre com um envelhecimento acelerado com origens desde de a década de 70. Mas o que pode parecer apenas uma questão de queda de produção e trabalho, se estende para diversos impasses fiscais, problemáticas futuras de investimento e poupança e impacto no Produto Interno Bruto (PIB). Apesar da principal Reforma da Previdência ter sido aprovada em 2019, justamente para mitigar os efeitos desse envelhecimento, o amanhã para a economia brasileira ainda é bastante inconclusivo, com a necessidade de ser bem analisado e estudado quando se trata das consequências a respeito do grande aumento da população idosa. Dessa forma, este relatório em questão tem como objetivo investigar a evolução da transição demográfica e quais são os seus impactos hoje na economia brasileira atual.

2: Evolução da Demografia Brasileira até os dias de hoje

Em um primeiro momento é fundamental entender o atual cenário sobre a demografia nacional, a começar pelo grande número de idosos que temos hoje no país, pois o comportamento de envelhecimento da população não é fenômeno recente, mas sim algo que já ocorre há diversos anos dentro do Brasil. Segundo os dados do último Censo Demográfico realizado em 2022, em 12 anos o número de pessoas com 65 anos ou mais cresceu 57,4% em relação à população do país, sendo que atualmente a porcentagem total dessas pessoas está em torno de 11% de acordo com o censo. Em 1980, a população com 65 anos ou mais representava apenas 4,0%, um grande aumento na porcentagem dessa faixa etária na sociedade em um período de 40 anos, uma das transições demográficas mais aceleradas do mundo, algo que levou mais de um século para ocorrer na Europa.

Por se tratar de uma transição demográfica, o fenômeno observado não apenas apresenta um maior crescimento da população idosa, mas sim também uma diminuição da população de crianças de até 14 anos, mudando de 38,2% em 1980, para 24,1% em 2010 e no último censo de 2022 para apenas 19,8%. A parcela da população de 15 a 64 anos, também teve um salto em seus números saindo de 57.7% em 1980 para 69,3% em 2022, mostrando a priori um aumento da população economicamente ativa.

Os dados abordados foram retirados do último Censo Demográfico realizado em 2022, dessa forma os dados mais recentes mostram um cenário ainda mais crítico sobre o fenômeno da transição demográfica. Ao analisar os dados da PNAD (Pesquisa Nacional por Amostra de Domicílios) do IBGE, que foi divulgado em Abril desse ano, o número de idosos alcançou o patamar de 16,6% em 2025, a população de 30 a 59 anos também aumentou, atingindo 58,6% do total de habitantes, e apesar de abordar um número menor de pessoas igual ao Censo, na qual a faixa é de 14 a 64 anos, ambas pesquisas mostram que essa faixa etária ocupa a maior parte da população brasileira. Além do mais, houve também uma redução de jovens de 0 a 13 anos recuando de 22% para 18,1%, evidenciando a mesma tendência já observada no Censo de 2022, uma transição demográfica intensificada a cada ano que se passa.

Gráfico 1

Gráfico 2

Analisando mais a fundo as razões para a transição demográfica acelerada, fica nítido uma grande mudança tanto nas taxas de natalidade e fecundidade com também nas taxas de mortalidade, que basicamente se inverteram ao longo desses 40 anos.

A Taxa de Natalidade apresentou uma queda significativa nesse período de análise, com o menor número de nascimentos em quase 50 anos em 2023, sendo a quinta queda anual seguida na natalidade. O menor número havia sido em 1976 que era 2,467 milhões e agora em 2023 o número de registros de nascimentos foi em torno de 2,518 milhões. (O)

A Taxa de Fecundidade também caiu, porém isso não é um fenômeno apenas presente no Brasil, mas sim do mundo inteiro. Em 1950, a taxa era em torno de seis filhos por mulher, e de cinco filhos no mundo. Sete décadas depois, esse indicador decaiu para apenas 1,6 por mulher, abaixo do chamado nível de reposição, um patamar 2,1 filhos necessários para que a próxima geração substitua a anterior sem ajuda da imigração. A queda se iniciou durante a década de 70, saindo de 5,6 no final dos anos 60 para 4,2 filhos em 1976, abrangendo todas as regiões do território brasileiro. (Gráfico 3)

Gráfico 3

Semelhante a taxa de fecundidade, a Taxa de Mortalidade Infantil também reduziu consideralvemente no período abordado, com de 142 óbitos para cada mil cada mil habitantes, em 1950 passando para apenas 32 em 2015. (Gráfico 4)

Do outro lado temos um grande aumento da expectativa de vida, mostrando uma longevidade maior dos idosos. Espera-se que entre 2015 e 2030, a população acima de 85 anos aumentará em um ritmo mais acelerado que a população entre zero e sessenta anos. Além disso, estima-se que também em 2030, 78% das mortes no Brasil ocorrerão com pessoas acima de sessenta anos, sendo que em 1950 a parcela da população que ultrapassava os sessenta anos era apenas de 18%. De acordo com dados recentes do IBGE, esse avanço da esperança de vida ainda ocorre, estando agora em torno de 76,4 para ambos os sexos. (Gráfico 5)

(Gráfico 4)

(Gráfico 5)

Todos os indicadores respondem a diversos fatores que começaram a ocorrer na metade do século passado e que culminam em reflexos até hoje, e que resultaram principalmente na transição demográfica analisada nesse relatório.

Um dos principais sendo a contracepção que impacta diretamente a fecundidade e a natalidade, com o acesso à metodos contraceptivos a maternidade se tornou algo planejado entre os casais, e como consequência o número de filhos por mulher caiu institivamente.

O fator econômico também tem grande peso nessa análise, pois criar um filho principalmente no Brasil, sendo considerado quase três vezes mais caro do que há 25 anos, com o custo total atualmente variando entre R$ 239 mil e R$ 3,6 milhões de uma criança do nascimento até os 18 anos, com a conta total subindo cada vez mais.

Além disso, o papel da mulher no mercado de trabalho fez com que as prioridades fossem redesenhadas, com carreira, formação, autonomia financeira dentro outros entrando em destaque em um cenário onde à vida familiar de cuidado os filhos antigamente era a maior prioridade.

Sobre a queda da mortalidade infantil e do aumento da qualidade de vida, pode-se afirmar que a expansão, do saneamento básico e redes de atenção primária (programas de vacinação e pré-natal), promoveram à sua queda e que consequentemente acarretou em um aumento da expectativa da população mais idosa, devido a esse aumento de políticas públicas voltadas para a qualidade de vida e saúde.

Observa-se que depois dessa grande análise a transição demográfica apresenta em sua grande maioria um padrão que se estendeu não apenas no Brasil mas sim para outros países e continentes, algo que será abordado ao final do relatório. O artigo “Evolução demográfica recente no Brasil” do professor José Alberto Magno de Carvalho publicado em 1980, foi o primeiro a provar essa rápida e dinâmica mudança na demografia brasileira. Através de seu estudo foi possível estabelecer empiricamente o padrão específico da transição demográfica brasileira.

  1. Ruptura do Regime Histórico de Equilíbrio Jovem Até 1970, o Brasil mantinha um padrão demográfico caracterizado por queda na mortalidade e fecundidade cronicamente elevada, o que gerava alto crescimento populacional com estrutura etária constante (~51% da população com menos de 20 anos). A partir de 1970, esse padrão se rompe com o início de um declínio acelerado da fecundidade.

  2. Queda Generalizada da Fecundidade A Taxa de Fecundidade Total caiu cerca de 24% entre 1965/70 e 1971/76 em todas as regiões brasileiras. Por abranger a maioria da população nacional, esse declínio atingiu obrigatoriamente as classes sociais de menor renda.

  3. Estreitamento Acelerado da Base da Pirâmide A redução no número de filhos ocorreu a um ritmo mais rápido do que o crescimento do contingente de mulheres em idade fértil. Isso gerou um efeito imediato na base da pirâmide etária, fazendo com que o número de nascidos a cada ano se tornassem proporcionalmente menores do que as gerações anteriores

  4. Recomposição Etária e Aumento Proporcional de Idosos No modelo de população estável construído pelo autor, a estrutura populacional sofre uma mudança profunda: Jovens (0 a 14 anos): A participação cai de ~42% para ~35% do total de habitantes. Idosos (65 anos ou mais): A participação salta de ~3% para ~9% da população. Razão de Dependência: A taxa de dependência total recua ligeiramente de 0,83 para 0,79, mas a fatia de idosos no total de dependentes cresce de 7% para 20%

Analisando a sucessão de eventos que levam a transição demográfica, é possível identificar que os indicadores de hoje são uma consequência direta do que Carvalho observou em seu artigo no início da década de 1980, o passo a passo para a transição demográfica com o fator de que no caso do Brasil, ocorreu em um espaço de tempo considerado bem curto e de forma acelerada se comparada com os países europeus.

3: Produtividade como catalisador

Saindo agora da análise demográfica, como todos os indicadores atuais mostram uma sucessão de eventos de anos de uma transição demográfica acelerada, a próxima pauta em questão é acerca dos impactos mais diretos na economia que toda essa dinâmica acarretou.

O impacto mais nítido e evidente se da por conta da Razão de Dependência, que também passará por um processo de inversão nos próximos anos segundo as projeções. Atualmente a previsão é de que em 2030 a RD Jovem ainda será superior do que a RD Idosa, respectivamente com 27% contra 19.7%, entretanto em 2040 é esperado que essa inversão ocorra com a RD Idosa em torno 31,5% ultrapassando a jovem no valor de 24,8% (Gráfico 6)

Na prática a análise dessa razão implica que em um futuro não muito distante a porcentagem dos idosos mais dependentes economicamente aumentará em relação a essa nova geração de jovens ativos no mercado de trabalho. Isso basicamente implica que em 2040 teremos para cada 100 trabalhadores potenciais 31,5 idosos dependentes. Entretanto o cenário se mostra ainda mais preocupante com passar dos anos, com a projeção de 2060 chegando à 51,5 idosos dependentes para cada 100 trabalhadores ativos. (Gráfico 6)

(Gráfico 6)

Em um cenário na qual já existe um grande problema de dependência no longo prazo, a baixa produtividade já se mostra nos dias de hoje com um potencializador do problema em questão. Conduzindo esse raciocínio é necessário analisar a PTF (Produtividade Total dos Fatores), um índice calculado principalmente pela FGV no Brasil que analisa o crescimento da produção que não é explicado pelo aumento na quantidade de recursos aplicados, ou seja, captura a eficiência real de todos os fatores.

O histórico recente indica que apesar de um aumento em 2020, ambas as PTFs apresentaram uma redução considerável até 2022,e posteriormente um pequeno aumento com a PTF bruta estando atualmente em 101.5 e a de ajuste de Capital Humano com 84.4, representando que até esse último aumento a melhoria educacional foi a responsável por melhorar a produtividade, a PTF Bruta. Ao descontar esse efeito, torna-se evidente que a eficiência real dos processos produtivos e adoção de novas tecnologias estão em declínio. (Gráfico 7)

Somando a problemática da produtividade com o aumento da dependência no longo prazo, enxerga-se um cenário preocupante com os novos trabalhadores da PEA (População Economicamente Ativa) sendo os responsáveis por sustentar essa grande nova parcela de idosos, já operando em um ritmo de eficiência em queda.

(Gráfico 7)

4: Déficit Previdenciário e o impacto no PIB

Como consequência de toda essa sequência, o problema se concretiza na análise da parte fiscal do país, pois os gastos com a previdência continuaram subindo acima da inflação mesmo após a Reforma da Previdência de 2019. De acordo com o IFI (Instituição Fiscal Independente do Senado), desde a reforma até hoje, apenas em 2021 que ocorreu uma queda 1,3% na variação real dos gastos com Previdência, com os todos os demais anos apresentando um aumento com destaque para 2023 em que o aumento real chegou a quase 8%, com a quantidade de benefícios subindo em 2,6% e o aumento real da despesa com pagamento de benefícios em 4,79%.

A pesquisa do IFI também calculou e projetou os gastos com a Previdência para os próximos 10 anos, estimando um crescimento real ano após ano. No ano passado (2025), o total dos gastos previdenciários já havia passado trilhão alcançando um patamar de R$ 1,037 trilhão de reais, e em 2035 o último ano projetado é esperado que o total gasto com a Previdência Social será em torno R$ 1,587 trilhão, passando a marca de um trilhão e meio. (Gráfico 8)

De acordo com o último BEPS (Boletim da Previdência Social), o resultado primário acumulado em 12 meses do RGPS (Regime Geral da Previdência Social) é de -R$ 349,7 bilhões (BEPS/jun 2026), e os dados a respeito do último mês calculado (Novembro de 2025), foi registrado um déficit mensal R$ 21,3 bilhões, mostrando sinais claros de um déficit estrutural que tende a se tornar cada vez pior.

(Gráfico 8)

O impacto dessa cadeia de eventos já está impactando o fisco do país, em uma situação na qual já é a das melhores. Com isso, toda essa questão ainda gera um impacto no PIB, ao analisar a porcentagem de participação da arrecadação vs benefícios de ambas dentro do mesmo. Em 2024, a arrecadação foi resposável 5,46% enquanto os benefícios alcançaram 7,99% de participação, representando um gap estrutural de 2,53 pontos percentuais evidenciando claramente um desequilíbrio que gera um déficit previdenciário. (Gráfico 9)

Outro dado relevante que o Boletim de 2024 traz, é acerca da PEA novamente, na qual 99,5 milhões de pessoas faziam parte dela enquanto apenas 62,2 milhões são contribuintes de pessoas físicas o que significa que mais ou menos 37% de ocupados na PEA não contribuem para o RGPS, por motivos como informalidade, trabalhadores domésticos e dentre outros.

(Gráfico 9)

5: O problema na raiz do Fiscal

Mediante a todo o cenário em questão e analisando como nos próximos anos o aumento dos gastos e das despesas relacionadas à previdência podem corroer o PIB aos poucos, é necessário compreender da onde surgem esse grande aumento de despesas e gastos e como nos últimos anos eles vem se intensificando cada vez mais.

Novamente de acordo com o BEPS, pode-se obter a quantidade de benefícios concedidos e emitidos pelo INSS e identificar dados de extrema relevância para a análise do fiscal. Primeiro é necessário destacar a diferença entre concedido e emitido nesse cenário, os concedidos representam os novos benefícios aprovados no período em questão, enquanto os emitidos são aqueles ativos que já estão sendo pagos e estão em “estoque”.

Na série dentro do Boletim que apresenta a quantidade anual de benefícios concedidos pelo INSS, desde 2006 até metade de 2026, reflete uma dinâmica de crescimento sobre a variável em questão, principalmente a partir de 2023, início do 3º Governo Lula que representou a maior variação anual de toda a série, 14,4%. Nesse ano, as concessões estavam na casa de 5,2 milhões, o que na época já era o maior valor de toda série, porém o último valor registrado que é referente a junho de 2026 registrou 8,1 milhões de novos benefícios concedidos com variação anual de 6,6% apenas na metade do ano. (Gráfico 10)

(Gráfico 10)

Esse grande aumento nos últimos 3 anos coincide com diretamente com as pessoas nascidas na época do pico do baby boom nacional, entre 1958 e 1963, completando os seus 60-65 anos de idade e atingindo a aposentadoria, é a parcela do maior corte demográfico da história brasileira se tornando beneficiária e desequilibrando a balança.

Do outro lado da moeda, ao analisar a evolução da quantidade dos benefícios emitidos ao longo dos anos o efeito de décadas de concessões demonstra um número de 42,2 milhões de benefícios destinados por meio do INSS em 2026. No primeiro ano da série, 2006 o número total era quase de 29,6 milhões, logo houve um aumento de 69% em 19 anos e como já analisado no último gráfico o fenômeno tende a se tornar cada vez mais acelerado, ao se considerar o padrão recente dos últimos anos.

A respeito de valores, em 2006 o valor total dos benefícos emitidos estava em torno de 381 bilhões e passou para 821 bilhões em 2026, um aumento de 110% em menos de 10 anos. Vale destacar que esses valores se referem apenas à população urbana, apesar do valor da população rural também apresentar grandes números, estando hoje na faixa de R$ 183,9 bilhões de reais. Considerando os últimos valores de ambas as séries referentes a julho de 2026, o total somando o urbano e o rural totaliza cerca de R$ 1,017 trilhão, valor próximo da projeção feito pelo IFI abordada mais acima, e que estipulava uma despesa total de R$ 1,091 trilhão de reis para esse ano. (Gráfico 11)

(Gráfico 11)

No fim da análise do Boletim, também entra em evidência outra problemática em relação a crescente dos gastos elevados com benefícios, a sua composição por espécie.

Apesar da maioria dos benefícios concedidos se direcionarem para o “estoque” dos emitidos e ser o grande responsável por esse aumento detendo um grande peso, a natureza no benefício não pode ser descartada principalmente se for a respeito do assistencial. Além do RGPS, financiado por contribuições de empregadores e empregados que inclui aposentadoria por idade, invalidez, pensão por morte, auxílio-doença e outros, existe o assistencial que é totalmente sem contribuição e 100% financiado pelo Tesouro, com apenas dois benefícios BPC ao idoso (+65 anos abaixo da linha da pobreza) e BPC ao deficiente. Não é uma aposentadoria e sim uma assistência social.

Atualmente o total e beneficiários do RGPS está em torno de 35,67 milhões enquanto os assistenciados estão com 6,4 milhões, porém o interessante não é apenas analisar a evolução do RGPS ao longo dos anos de 1%-4%, esperado ao considerar a transição demográfica, mas sim a evolução do assistencialismo a uma taxa de 2%-7% ao ano, com um grande aumento recente, principalmente e novamente no ano de 2023 com uma explosão de 11,3% de um ano pro outro. Tais dados, acendem um novo alerta, de que além do problema em relação ao envelhecimento daqueles que envelheceram mas que contribuíram, do outro lado temos um possível aumento de idosos que necessitam de assistência social, sem nenhum tipo de contribuição, mais uma variável indicando que a conta do fiscal pode não fechar logo mais. (Gráfico 12)

(Gráfico 12)

6:Impacto no Investimento e na Poupança

Após destrinchar toda a problemática presente dentro do fiscal brasileiro, outro impacto da transição demográfica se da por conta da parte monetária envolvendo poupanças, investimentos e taxas de juros.

Com o aumento da população idosa, essa parcela da população costuma consumir e investir menos, algo que pode desacelerar a economia ainda mais em um longo prazo. A taxa de poupança está 15,5%, resultado do 1º Trimestre de 2026, enquanto a taxa de investimento se encontra em 16,5%, o que indica um gap de poupança aberta na qual o brasileiro já depende da poupança externa para fechar o 1% nessa análise. O envelhecimento da população pode comprimir ainda mais a poupança privada, enquanto o déficit previdenciário vindo do RGPS piora ainda mais a poupança negativa pública. (Gráfico 13)

Além da poupança decair, o lado do investimento também pode apresentar uma queda porém em uma escala menor, pois juntamente com o envelhecimento, alguns setores podem se tornar mais demandados e atrair capital, como saúde e bem-estar, turismo e lazer, infraestrutura para idosos e dentre outros.

Com ambas em uma possível queda, a situação da estagnação da economia ou desaceleração do PIB entra em vigência novamente, pois além do PIB ser impactado pelo lado da produtividade e do fiscal, em outra frente a queda da atividade econômica pode ocorrer pela falta de investimento e queda da poupança.

(Gráfico 13)

A medida que o governo necessita de capital e recursos para quitar dívida bruta, a principal medida para cumprir tal objetivo é a emissão de títulos públicos, promessas de pagamentos futuros para o investidor que paga hoje e irá receber o principal mais os juros no futuro.

O problema se encontra quando os títulos vencem, o governo brasileiro deve honrar o pagamento, porém não tendo superávit, é necessário emitir novos títulos para pagar os antigos, algo que é o cenário do Brasil na maior parte do tempo. Tal cenário, é a famosa Rolagem da Dívida, e com os juros nominais em torno de 9% ao ano, sobre uma dívida de quase 82% do PIB, faz com que a dívida aumente sem nenhuma despesa nova, pois o PIB cresce ainda que em um ritmo menor a mais ou menos 2-3%, o que faz com que a dívida cresça 6-7 pontos percentuais a cada anos. (Gráfico 14)

O déficit público do RGPS se encontra em uma despesa primária altíssima que o governo não consegue quitar, e como o déficit primário some no serviço da dívida, no valor mais recente (-10,78%), indicando que os 349 bilhões vindos do déficit previdenciário viram títulos públicos novos, que geram juros, que geram mais títulos, que geram juros.

(Gráfico 14)

No final de análise, é interessante comentar sobre esse mesmo fenômeno de transição demográfica que ocorre em outro país de forma muito similar porém com um resultado final que difere da realidade brasileira. O Japão passou por uma dinâmica de aumento do número de idosos de uma forma ainda mais severa e impactante, hoje em dia o país é o líder mundial em envelhecimento populacional totalizando cerca de 36 milhões de pessoas idosas no país.

A população do Japão era de 86,4 milhões de habitantes em 1950, sendo 30,4 milhões de jovens de 0-14 anos (35,2% do total), 13 milhões de pessoas de 50+ (15% do total), 6,6 milhões de 60+ (7,7% do total) e 389 mil idosos de 80+ (0,5% do total). Estes números mudaram substancialmente até 2024, ano em que a população total japonesa chegou a 123,8 milhões de habitantes, sendo 14,2 milhões de jovens de 0-14 anos (11,4%), 62 milhões de pessoas de 50+ (50%), 44,5% de idosos de 60+ (35,9%) e 13,1 milhões de idosos de 80+ (10,6%). Portanto, as pessoas de 50 anos e mais de idade já representam metade da população japonesa e a proporção de idosos deve continuar crescendo ao longo do século XXI.

Entretanto, o país asiático não convive com problemas relacionadas a dívida com grande frequência semelhante ao Brasil. Apesar do Japão ter envelhecido antes que a população brasileira e acumulou uma enorme dívida de quase 250% do PIB, foi possível uma sustentação da dívida devido ao juro real negativo ou praticamente zero e com uma alta popupança doméstica, o que arrefeceu os títulos, fazendo o custo da dívida ser mínimo, justamente o caminho inverso do Brasil. (Gráfico 15)

(Gráfico 15)

7: Conclusão

O envelhecimento populacional do Brasil é uma realidade que já se manifesta em todas as dimensões do país — sociais, econômicas, de saúde, de segurança e diversas outras. Mais do que um dado estatístico, trata-se de uma transformação estrutural cujos efeitos abalam as bases de uma nação da complexidade do Brasil, e que se aprofundará nas próximas décadas independentemente de qualquer decisão de política econômica tomada hoje. Nesse sentido, compreender que existe uma cadeia de eventos que parte do envelhecimento populacional, atravessa a demografia, a produtividade e o produto, e se concretiza no fiscal — é o passo essencial para que qualquer caminho de solução seja traçado com consistência. Ignorar um elo dessa cadeia é tratar o sintoma sem endereçar a causa. Com esse objetivo, este relatório buscou trazer essa discussão para além dos gabinetes e das autoridades econômicas. A transição demográfica acelerada do Brasil não é um tema restrito a especialistas — ela afeta diretamente o comércio, a poupança, o investimento, os juros, o salário e tantos outros fatores que compõem a economia do cotidiano de cada brasileiro. Entendê-la é, portanto, o primeiro passo para enfrentá-la.

Fontes:

https://educa.ibge.gov.br/jovens/conheca-o-brasil/populacao/18318-piramide-etaria.html

https://www.cnnbrasil.com.br/nacional/brasil/populacao-jovem-cai-e-nume ro-de-idosos-aumenta-no-brasil-aponta-ibge/#goog_rewarded

https://biblioteca.ibge.gov.br/index.php/biblioteca-catalogo?view=detalhes&id=772

https://strong.com.br/glossario/por-que-o-envelhecimento-populacional-impacta-o-mercado/

https://blogdodesenvolvimento.bndes.gov.br/categoria/economia-e-desenvolvimento/Envelhecimento-e-transicao-demografica/

https://www.worldometers.info/pt/demografia/brasil-demografia/

https://assistants.com.br/a-taxa-de-natalidade-brasileira-vem-caindo/

https://www.cnnbrasil.com.br/nacional/brasil/brasil-registra-menor-numero-de-nascimentos-em-quase-50-anos-diz-ibge/

https://www.congressoemfoco.com.br/noticia/107796/ifi-orcamento-subestimou-gasto-de-bpc-previdencia-e-bolsa-familia

https://www.cnnbrasil.com.br/economia/money/macroeconomia/ifi-orcamento-subestima-despesas-com-previdencia-bpc-e-bolsa-familia/

https://ofator.com.br/informacao/gasto-com-previdencia-continua-subindo-acima-da-inflacao-mostra-ifi/

https://www.gov.br/previdencia/pt-br/assuntos/previdencia-social/Dados-estatisticos-previdencia-social-e-inss/boletins-da-previdencia-social

https://sidra.ibge.gov.br/Tabela/6727

https://sidra.ibge.gov.br/Tabela/6727

https://tradingeconomics.com/japan/interest-rate

https://www.stat-search.boj.or.jp/ssi/mtshtml/fm02_m_1_en.html

https://www.poder360.com.br/poder-internacional/populacao-do-japao-cai-e-numero-de-idosos-atinge-recorde/

LS0tDQp0aXRsZTogIkltcGFjdG9zIGRhIFRyYW5zacOnw6NvIERlbW9ncsOhZmljYSBBY2VsZXJhZGEgZG8gQnJhc2lsIg0KYXV0aG9yOiAiSm/Do28gUGVkcm8gR29kaW5obyINCmRhdGU6ICIyMDI2LTA4LTA2Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgdG9jX2RlcHRoOiAzDQogICAgbnVtYmVyX3NlY3Rpb25zOiBmYWxzZQ0KICAgIHRoZW1lOiBsdW1lbg0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCg0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoc2lkcmFyKQ0KbGlicmFyeShpcGVhZGF0YXIpDQpsaWJyYXJ5KHF1YW50bW9kKQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkocmJjYikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeSh3cml0ZXhsKQ0KbGlicmFyeShodHRyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KEdldEJDQkRhdGEpDQpgYGANCg0KIyAqMTogSW50cm9kdcOnw6NvKg0KDQrDiSB1bSBmYXRvIHF1ZSBhIHBvcHVsYcOnw6NvIG11bmRpYWwgZXN0w6EgZW52ZWxoZWNlbmRvLCBjb250aW5lbnRlcyBpbnRlaXJvcyBjb21vIGEgRXVyb3BhIGVzdMOhIHNlbmRvIGltcGFjdGFkb3MgcG9yIGVzc2EgbXVkYW7Dp2EgZGVtb2dyw6FmaWNhLCBkZWNvcnJlbnRlIGTDqWNhZGFzIGRlIG11ZGFuw6dhcyBlc3RydXR1cmFpcyBuYSBzb2NpZWRhZGUgcXVlIHRhbWLDqW0gZ2VyYW0gaW1wYWN0byBuYSBjb25qdW50dXJhIGVjb27DtG1pY2EuIE8gQnJhc2lsIG7Do28gZGl2ZXJnZSBkbyBwcm9ibGVtYSwgYXR1YWxtZW50ZSBhIHBvcHVsYcOnw6NvIGJyYXNpbGVpcmEgc29mcmUgY29tIHVtIGVudmVsaGVjaW1lbnRvIGFjZWxlcmFkbyBjb20gb3JpZ2VucyBkZXNkZSBkZSBhIGTDqWNhZGEgZGUgNzAuIE1hcyBvIHF1ZSBwb2RlIHBhcmVjZXIgYXBlbmFzIHVtYSBxdWVzdMOjbyBkZSBxdWVkYSBkZSBwcm9kdcOnw6NvIGUgdHJhYmFsaG8sIHNlIGVzdGVuZGUgcGFyYSBkaXZlcnNvcyBpbXBhc3NlcyBmaXNjYWlzLCBwcm9ibGVtw6F0aWNhcyBmdXR1cmFzIGRlIGludmVzdGltZW50byBlIHBvdXBhbsOnYSBlIGltcGFjdG8gbm8gUHJvZHV0byBJbnRlcm5vIEJydXRvIChQSUIpLiBBcGVzYXIgZGEgcHJpbmNpcGFsIFJlZm9ybWEgZGEgUHJldmlkw6puY2lhIHRlciBzaWRvIGFwcm92YWRhIGVtIDIwMTksIGp1c3RhbWVudGUgcGFyYSBtaXRpZ2FyIG9zIGVmZWl0b3MgZGVzc2UgZW52ZWxoZWNpbWVudG8sIG8gYW1hbmjDoyBwYXJhIGEgZWNvbm9taWEgYnJhc2lsZWlyYSBhaW5kYSDDqSBiYXN0YW50ZSBpbmNvbmNsdXNpdm8sIGNvbSBhIG5lY2Vzc2lkYWRlIGRlIHNlciBiZW0gYW5hbGlzYWRvIGUgZXN0dWRhZG8gcXVhbmRvIHNlIHRyYXRhIGRhcyBjb25zZXF1w6puY2lhcyBhIHJlc3BlaXRvIGRvIGdyYW5kZSBhdW1lbnRvIGRhIHBvcHVsYcOnw6NvIGlkb3NhLiBEZXNzYSBmb3JtYSwgZXN0ZSByZWxhdMOzcmlvIGVtIHF1ZXN0w6NvIHRlbSBjb21vIG9iamV0aXZvIGludmVzdGlnYXIgYSBldm9sdcOnw6NvIGRhIHRyYW5zacOnw6NvIGRlbW9ncsOhZmljYSBlIHF1YWlzIHPDo28gb3Mgc2V1cyBpbXBhY3RvcyBob2plIG5hIGVjb25vbWlhIGJyYXNpbGVpcmEgYXR1YWwuIA0KDQojICoyOiBFdm9sdcOnw6NvIGRhIERlbW9ncmFmaWEgQnJhc2lsZWlyYSBhdMOpIG9zIGRpYXMgZGUgaG9qZSoNCg0KRW0gdW0gcHJpbWVpcm8gbW9tZW50byDDqSBmdW5kYW1lbnRhbCBlbnRlbmRlciBvIGF0dWFsIGNlbsOhcmlvIHNvYnJlIGEgZGVtb2dyYWZpYSBuYWNpb25hbCwgYSBjb21lw6dhciBwZWxvIGdyYW5kZSBuw7ptZXJvIGRlIGlkb3NvcyBxdWUgdGVtb3MgaG9qZSBubyBwYcOtcywgcG9pcyBvIGNvbXBvcnRhbWVudG8gZGUgZW52ZWxoZWNpbWVudG8gZGEgcG9wdWxhw6fDo28gbsOjbyDDqSBmZW7DtG1lbm8gcmVjZW50ZSwgbWFzIHNpbSBhbGdvIHF1ZSBqw6Egb2NvcnJlIGjDoSBkaXZlcnNvcyBhbm9zIGRlbnRybyBkbyBCcmFzaWwuIFNlZ3VuZG8gb3MgZGFkb3MgZG8gw7psdGltbyBDZW5zbyBEZW1vZ3LDoWZpY28gcmVhbGl6YWRvIGVtIDIwMjIsIGVtIDEyIGFub3MgbyBuw7ptZXJvIGRlIHBlc3NvYXMgY29tIDY1IGFub3Mgb3UgbWFpcyBjcmVzY2V1IDU3LDQlIGVtIHJlbGHDp8OjbyDDoCBwb3B1bGHDp8OjbyBkbyBwYcOtcywgc2VuZG8gcXVlIGF0dWFsbWVudGUgYSBwb3JjZW50YWdlbSB0b3RhbCBkZXNzYXMgcGVzc29hcyBlc3TDoSBlbSB0b3JubyBkZSAxMSUgZGUgYWNvcmRvIGNvbSBvIGNlbnNvLiBFbSAxOTgwLCBhIHBvcHVsYcOnw6NvIGNvbSA2NSBhbm9zIG91IG1haXMgcmVwcmVzZW50YXZhIGFwZW5hcyA0LDAlLCB1bSBncmFuZGUgYXVtZW50byBuYSBwb3JjZW50YWdlbSBkZXNzYSBmYWl4YSBldMOhcmlhIG5hIHNvY2llZGFkZSBlbSB1bSBwZXLDrW9kbyBkZSA0MCBhbm9zLCB1bWEgZGFzIHRyYW5zacOnw7VlcyBkZW1vZ3LDoWZpY2FzIG1haXMgYWNlbGVyYWRhcyBkbyBtdW5kbywgYWxnbyBxdWUgbGV2b3UgbWFpcyBkZSB1bSBzw6ljdWxvIHBhcmEgb2NvcnJlciBuYSBFdXJvcGEuIA0KDQpQb3Igc2UgdHJhdGFyIGRlIHVtYSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EsIG8gZmVuw7RtZW5vIG9ic2VydmFkbyBuw6NvIGFwZW5hcyBhcHJlc2VudGEgdW0gbWFpb3IgY3Jlc2NpbWVudG8gZGEgcG9wdWxhw6fDo28gaWRvc2EsIG1hcyBzaW0gdGFtYsOpbSB1bWEgZGltaW51acOnw6NvIGRhIHBvcHVsYcOnw6NvIGRlIGNyaWFuw6dhcyBkZSBhdMOpIDE0IGFub3MsIG11ZGFuZG8gZGUgMzgsMiUgZW0gMTk4MCwgcGFyYSAyNCwxJSBlbSAyMDEwIGUgbm8gw7psdGltbyBjZW5zbyBkZSAyMDIyIHBhcmEgYXBlbmFzIDE5LDglLiBBIHBhcmNlbGEgZGEgcG9wdWxhw6fDo28gZGUgMTUgYSA2NCBhbm9zLCB0YW1iw6ltIHRldmUgdW0gc2FsdG8gZW0gc2V1cyBuw7ptZXJvcyBzYWluZG8gZGUgNTcuNyUgZW0gMTk4MCBwYXJhIDY5LDMlIGVtIDIwMjIsIG1vc3RyYW5kbyBhIHByaW9yaSB1bSBhdW1lbnRvIGRhIHBvcHVsYcOnw6NvIGVjb25vbWljYW1lbnRlIGF0aXZhLiANCg0KT3MgZGFkb3MgYWJvcmRhZG9zIGZvcmFtIHJldGlyYWRvcyBkbyDDumx0aW1vIENlbnNvIERlbW9ncsOhZmljbyByZWFsaXphZG8gZW0gMjAyMiwgZGVzc2EgZm9ybWEgb3MgZGFkb3MgbWFpcyByZWNlbnRlcyBtb3N0cmFtIHVtIGNlbsOhcmlvIGFpbmRhIG1haXMgY3LDrXRpY28gc29icmUgbyBmZW7DtG1lbm8gZGEgdHJhbnNpw6fDo28gZGVtb2dyw6FmaWNhLiBBbyBhbmFsaXNhciBvcyBkYWRvcyBkYSBQTkFEIChQZXNxdWlzYSBOYWNpb25hbCBwb3IgQW1vc3RyYSBkZSBEb21pY8OtbGlvcykgZG8gSUJHRSwgcXVlIGZvaSBkaXZ1bGdhZG8gZW0gQWJyaWwgZGVzc2UgYW5vLCBvIG7Dum1lcm8gZGUgaWRvc29zIGFsY2Fuw6dvdSBvIHBhdGFtYXIgZGUgMTYsNiUgZW0gMjAyNSwgYSBwb3B1bGHDp8OjbyBkZSAzMCBhIDU5IGFub3MgdGFtYsOpbSBhdW1lbnRvdSwgYXRpbmdpbmRvIDU4LDYlIGRvIHRvdGFsIGRlIGhhYml0YW50ZXMsIGUgYXBlc2FyIGRlIGFib3JkYXIgdW0gbsO6bWVybyBtZW5vciBkZSBwZXNzb2FzIGlndWFsIGFvIENlbnNvLCBuYSBxdWFsIGEgZmFpeGEgw6kgZGUgMTQgYSA2NCBhbm9zLCBhbWJhcyBwZXNxdWlzYXMgbW9zdHJhbSBxdWUgZXNzYSBmYWl4YSBldMOhcmlhIG9jdXBhIGEgbWFpb3IgcGFydGUgZGEgcG9wdWxhw6fDo28gYnJhc2lsZWlyYS4gQWzDqW0gZG8gbWFpcywgaG91dmUgdGFtYsOpbSB1bWEgcmVkdcOnw6NvIGRlIGpvdmVucyBkZSAwIGEgMTMgYW5vcyByZWN1YW5kbyBkZSAyMiUgcGFyYSAxOCwxJSwgZXZpZGVuY2lhbmRvIGEgbWVzbWEgdGVuZMOqbmNpYSBqw6Egb2JzZXJ2YWRhIG5vIENlbnNvIGRlIDIwMjIsIHVtYSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EgaW50ZW5zaWZpY2FkYSBhIGNhZGEgYW5vIHF1ZSBzZSBwYXNzYS4gDQoNCioqR3LDoWZpY28gMSoqDQoNCmBgYHtyfQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgR3LDoWZpY286IFBpcsOibWlkZSBFdMOhcmlhIOKAlCBCcmFzaWwgfCBDZW5zbyAxOTgwDQojIElkZW50aWRhZGUgVmlzdWFsIE9maWNpYWw6IFBhZHLDo28gSWJNYWNybyBCSCAoTWFudWFsIGRlIE1hcmNhKQ0KIyBGb250ZTogSUJHRSDigJQgQ2Vuc28gRGVtb2dyw6FmaWNvIDE5ODANCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIEFtYXJlbG8gSWJNYWNybyAoU8OpcmllIE11bGhlcmVzIC8gRGVzdGFxdWVzKQ0KSUJfQVpVTF9CQVNFICAgIDwtICIjMDIwMjNDIiAgIyBBenVsIEliTWFjcm8gKFPDqXJpZSBIb21lbnMgLyBUw610dWxvcykNCklCX0JSQU5DTyAgICAgICA8LSAiI0ZGRkZGRiIgICMgRnVuZG8gaW5zdGl0dWNpb25hbA0KSUJfQVpVTF9NRURJTyAgIDwtICIjMDAyQzVFIiAgIyBBenVsIE3DqWRpbyBkZSBhcG9pbw0KSUJfQVpVTF9DTEFSTyAgIDwtICIjNkI4QkE0IiAgIyBBenVsIENsYXJvIGNvbXBsZW1lbnRhcg0KSUJfQ0lOWkFfRVNDVVJPIDwtICIjM0EzQTNBIiAgIyBUZXh0b3MsIGVpeG9zIGUgc3VidMOtdHVsb3MNCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiIgICMgTGluaGFzIGRlIGdyYWRlLCBlaXhvcyBlIGNyw6lkaXRvcw0KDQojIOKUgOKUgCAyLiBURU1BIElOU1RJVFVDSU9OQUwgSUJNQUNSTyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCnRlbWFfaWJtYWNybyA8LSBoY190aGVtZV9tZXJnZSgNCiAgaGNfdGhlbWVfc21wbCgpLA0KICBoY190aGVtZSgNCiAgICBjaGFydCA9IGxpc3QoDQogICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIikNCiAgICApLA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJib2xkIiwgZm9udFNpemUgPSAiMThweCIpDQogICAgKSwNCiAgICBzdWJ0aXRsZSA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEycHgiKQ0KICAgICksDQogICAgeEF4aXMgPSBsaXN0KA0KICAgICAgZ3JpZExpbmVXaWR0aCA9IDAsDQogICAgICBsaW5lQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgIHRpY2tDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKSkNCiAgICApLA0KICAgIHlBeGlzID0gbGlzdCgNCiAgICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgICBsaW5lQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikpDQogICAgKSwNCiAgICBsZWdlbmQgPSBsaXN0KA0KICAgICAgZW5hYmxlZCA9IFRSVUUsDQogICAgICBpdGVtU3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gIm5vcm1hbCIsIGZvbnRTaXplID0gIjEycHgiKQ0KICAgICkNCiAgKQ0KKQ0KDQojIEhlbHBlciBkZSBmb3JtYXRhw6fDo28gZXN0cnV0dXJhbCBwYXJhIFBpcsOibWlkZXMgRXTDoXJpYXMNCmhjX2Zvcm1hdGFyX3BpcmFtaWRlIDwtIGZ1bmN0aW9uKGhjLCB0aXR1bG8sIHN1YnRpdHVsbywgdGV4dG9feSA9ICJQb3B1bGHDp8OjbyIpIHsNCiAgaGMgJT4lDQogICAgaGNfYWRkX3RoZW1lKHRlbWFfaWJtYWNybykgJT4lDQogICAgaGNfdGl0bGUodGV4dCA9IHRpdHVsbywgYWxpZ24gPSAibGVmdCIpICU+JQ0KICAgIGhjX3N1YnRpdGxlKHRleHQgPSBzdWJ0aXR1bG8sIGFsaWduID0gImxlZnQiKSAlPiUNCiAgICBoY195QXhpcygNCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gdGV4dG9feSwgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPKSksDQogICAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgICBmb3JtYXR0ZXIgPSBKUygiZnVuY3Rpb24oKSB7IHJldHVybiBIaWdoY2hhcnRzLm51bWJlckZvcm1hdChNYXRoLmFicyh0aGlzLnZhbHVlKSwgMSkgKyAnIE1pJzsgfSIpDQogICAgICApDQogICAgKSAlPiUNCiAgICBoY190b29sdGlwKA0KICAgICAgc2hhcmVkID0gRkFMU0UsDQogICAgICBmb3JtYXR0ZXIgPSBKUygiZnVuY3Rpb24oKSB7DQogICAgICAgIHJldHVybiAnPGI+JyArIHRoaXMuc2VyaWVzLm5hbWUgKyAnPC9iPjxici8+JyArDQogICAgICAgICAgICAgICAnRmFpeGEgZXTDoXJpYTogPGI+JyArIHRoaXMucG9pbnQuY2F0ZWdvcnkgKyAnIGFub3M8L2I+PGJyLz4nICsNCiAgICAgICAgICAgICAgICdQb3B1bGHDp8OjbzogPGI+JyArIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KE1hdGguYWJzKHRoaXMueSksIDIpICsgJyBtaWxow7VlczwvYj4nOw0KICAgICAgfSIpDQogICAgKSAlPiUNCiAgICBoY19jcmVkaXRzKA0KICAgICAgZW5hYmxlZCA9IFRSVUUsDQogICAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFIOKAlCBDZW5zbyBEZW1vZ3LDoWZpY28gMTk4MC4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm8gQkguIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgICApICU+JQ0KICAgIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkNCn0NCg0KIyDilIDilIAgMy4gREFET1MgREVNT0dSw4FGSUNPUyAoQ0VOU08gMTk4MCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpuaXZlaXNfZmFpeGFzXzE5ODAgPC0gYygNCiAgIjDigJM0IiwgIjXigJM5IiwgIjEw4oCTMTQiLCAiMTXigJMxOSIsICIyMOKAkzI0IiwgIjI14oCTMjkiLCAiMzDigJMzNCIsICIzNeKAkzM5IiwNCiAgIjQw4oCTNDQiLCAiNDXigJM0OSIsICI1MOKAkzU0IiwgIjU14oCTNTkiLCAiNjDigJM2NCIsICI2NeKAkzY5IiwgIjcw4oCTNzQiLCAiNzXigJM3OSIsICI4MCsiDQopDQoNCmhvbWVuc18xOTgwICAgPC0gYyg4LjE1LCA3LjM1LCA3LjE1LCA2LjUwLCA1LjUwLCA0LjUwLCAzLjcwLCAzLjIwLCAyLjcwLCAyLjIwLCAxLjgwLCAxLjQwLCAxLjEwLCAwLjgwLCAwLjUwLCAwLjMwLCAwLjI1KQ0KbXVsaGVyZXNfMTk4MCA8LSBjKDguMDUsIDcuMzAsIDcuMTAsIDYuNjAsIDUuNjUsIDQuNjUsIDMuODUsIDMuMzAsIDIuODAsIDIuMzAsIDEuOTAsIDEuNTAsIDEuMjAsIDAuOTAsIDAuNjAsIDAuMzUsIDAuMzUpDQoNCmxpbWl0ZV9laXhvIDwtIGNlaWxpbmcobWF4KGMoaG9tZW5zXzE5ODAsIG11bGhlcmVzXzE5ODApKSArIDAuNSkNCg0KIyDilIDilIAgNC4gQ09OU1RSVcOHw4NPIERPIFBMT1Qg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX3BpcmFtaWRlXzE5ODAgPC0gaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHR5cGUgPSAiYmFyIiwNCiAgICBhbmltYXRpb24gPSBGQUxTRQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgSG9tZW5zIChBenVsIEliTWFjcm8g4oCUIExhZG8gRXNxdWVyZG8gLyBWYWxvcmVzIE5lZ2F0aXZvcykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lICAgICAgICA9ICJIb21lbnMiLA0KICAgIGRhdGEgICAgICAgID0gYXMubGlzdCgtaG9tZW5zXzE5ODApLA0KICAgIGNvbG9yICAgICAgID0gSUJfQVpVTF9CQVNFLA0KICAgIGJvcmRlcldpZHRoID0gMA0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgTXVsaGVyZXMgKEFtYXJlbG8gSWJNYWNybyDigJQgTGFkbyBEaXJlaXRvIC8gVmFsb3JlcyBQb3NpdGl2b3MpDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSAgICAgICAgPSAiTXVsaGVyZXMiLA0KICAgIGRhdGEgICAgICAgID0gYXMubGlzdChtdWxoZXJlc18xOTgwKSwNCiAgICBjb2xvciAgICAgICA9IElCX0FNQVJFTE8sDQogICAgYm9yZGVyV2lkdGggPSAwDQogICkgJT4lDQogIA0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gbml2ZWlzX2ZhaXhhc18xOTgwLA0KICAgIHJldmVyc2VkICAgPSBGQUxTRSwNCiAgICB0aXRsZSAgICAgID0gbGlzdCh0ZXh0ID0gTlVMTCkNCiAgKSAlPiUNCiAgDQogIGhjX3lBeGlzKA0KICAgIG1pbiA9IC1saW1pdGVfZWl4bywNCiAgICBtYXggPSBsaW1pdGVfZWl4bywNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCh2YWx1ZSA9IDAsIHdpZHRoID0gMS41LCBjb2xvciA9IElCX0NJTlpBX0NMQVJPLCB6SW5kZXggPSA1KQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGJhciA9IGxpc3QoDQogICAgICBncm91cGluZyAgICAgPSBUUlVFLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMCwNCiAgICAgIHBvaW50UGFkZGluZyA9IDAuMTUsDQogICAgICBzdGFja2luZyAgICAgPSAibm9ybWFsIg0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX2Zvcm1hdGFyX3BpcmFtaWRlKA0KICAgIHRpdHVsbyAgICA9ICJQaXLDom1pZGUgRXTDoXJpYSDigJQgQnJhc2lsIChDZW5zbyAxOTgwKSIsDQogICAgc3VidGl0dWxvID0gIlBvcHVsYcOnw6NvIHJlc2lkZW50ZSBwb3Igc2V4byBlIGZhaXhhcyBldMOhcmlhcyBxdWlucXVlbmFpcyAoZW0gbWlsaMO1ZXMgZGUgcGVzc29hcykiLA0KICAgIHRleHRvX3kgICA9ICJQb3B1bGHDp8OjbyAoZW0gbWlsaMO1ZXMpIg0KICApDQoNCmdyYWZpY29fcGlyYW1pZGVfMTk4MA0KYGBgDQoNCioqR3LDoWZpY28gMioqDQoNCmBgYHtyfQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgR3LDoWZpY286IFBpcsOibWlkZSBFdMOhcmlhIOKAlCBCcmFzaWwgfCBDZW5zbyAyMDIyDQojIElkZW50aWRhZGUgVmlzdWFsIE9maWNpYWw6IFBhZHLDo28gSWJNYWNybyBCSCAoTWFudWFsIGRlIE1hcmNhKQ0KIyBGb250ZTogSUJHRSDigJQgQ2Vuc28gRGVtb2dyw6FmaWNvIDIwMjIgKFRhYmVsYSBTSURSQSA5NTE0KQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBQcmV2ZW7Dp8OjbyBwYXJhIGNhbWluaG9zIHRlbXBvcsOhcmlvcyBubyBXaW5kb3dzIGNvbSBhY2VudHVhw6fDo28NCmRpci5jcmVhdGUoIkM6L1J0ZW1wIiwgc2hvd1dhcm5pbmdzID0gRkFMU0UpDQpTeXMuc2V0ZW52KFRNUERJUiA9ICJDOi9SdGVtcCIsIFRNUCA9ICJDOi9SdGVtcCIsIFRFTVAgPSAiQzovUnRlbXAiKQ0KDQpsaWJyYXJ5KHNpZHJhcikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyDilIDilIAgMS4gREVGSU5Jw4fDg08gREEgUEFMRVRBIElOU1RJVFVDSU9OQUwgKEdVSUEgREUgTUFSQ0EpIOKUgOKUgOKUgOKUgOKUgOKUgA0KSUJfQU1BUkVMTyAgICAgIDwtICIjRkZCODFGIiAgIyBBbWFyZWxvIEliTWFjcm8gKFPDqXJpZSBNdWxoZXJlcyAvIERlc3RhcXVlcykNCklCX0FaVUxfQkFTRSAgICA8LSAiIzAyMDIzQyIgICMgQXp1bCBJYk1hY3JvIChTw6lyaWUgSG9tZW5zIC8gVMOtdHVsb3MpDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgQXp1bCBNw6lkaW8gZGUgYXBvaW8NCklCX0FaVUxfQ0xBUk8gICA8LSAiIzZCOEJBNCIgICMgQXp1bCBDbGFybyBjb21wbGVtZW50YXINCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSIgICMgVGV4dG9zLCBlaXhvcyBlIGxlZ2VuZGFzDQpJQl9DSU5aQV9DTEFSTyAgPC0gIiNBNkE2QTYiICAjIExpbmhhcyBkZSBncmFkZSwgZWl4b3MgZSBjcsOpZGl0b3MNCg0KIyDilIDilIAgMi4gVEVNQSBJTlNUSVRVQ0lPTkFMIElCTUFDUk8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQp0ZW1hX2libWFjcm8gPC0gaGNfdGhlbWVfbWVyZ2UoDQogIGhjX3RoZW1lX3NtcGwoKSwNCiAgaGNfdGhlbWUoDQogICAgY2hhcnQgPSBsaXN0KA0KICAgICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICAgKSwNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGZvbnRTaXplID0gIjE4cHgiKQ0KICAgICksDQogICAgc3VidGl0bGUgPSBsaXN0KA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgICApLA0KICAgIHhBeGlzID0gbGlzdCgNCiAgICAgIGdyaWRMaW5lV2lkdGggPSAwLA0KICAgICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgICB0aWNrQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikpDQogICAgKSwNCiAgICB5QXhpcyA9IGxpc3QoDQogICAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpKQ0KICAgICksDQogICAgbGVnZW5kID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgaXRlbVN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgICApDQogICkNCikNCg0KIyBIZWxwZXIgZGUgZm9ybWF0YcOnw6NvIGVzdHJ1dHVyYWwgcGFyYSBQaXLDom1pZGVzIEV0w6FyaWFzDQpoY19mb3JtYXRhcl9waXJhbWlkZSA8LSBmdW5jdGlvbihoYywgdGl0dWxvLCBzdWJ0aXR1bG8sIHRleHRvX3kgPSAiUG9wdWxhw6fDo28iKSB7DQogIGhjICU+JQ0KICAgIGhjX2FkZF90aGVtZSh0ZW1hX2libWFjcm8pICU+JQ0KICAgIGhjX3RpdGxlKHRleHQgPSB0aXR1bG8sIGFsaWduID0gImxlZnQiKSAlPiUNCiAgICBoY19zdWJ0aXRsZSh0ZXh0ID0gc3VidGl0dWxvLCBhbGlnbiA9ICJsZWZ0IikgJT4lDQogICAgaGNfeUF4aXMoDQogICAgICB0aXRsZSA9IGxpc3QodGV4dCA9IHRleHRvX3ksIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTykpLA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgZm9ybWF0dGVyID0gSlMoImZ1bmN0aW9uKCkgeyByZXR1cm4gSGlnaGNoYXJ0cy5udW1iZXJGb3JtYXQoTWF0aC5hYnModGhpcy52YWx1ZSksIDEpICsgJyBNaSc7IH0iKQ0KICAgICAgKQ0KICAgICkgJT4lDQogICAgaGNfdG9vbHRpcCgNCiAgICAgIHNoYXJlZCA9IEZBTFNFLA0KICAgICAgZm9ybWF0dGVyID0gSlMoImZ1bmN0aW9uKCkgew0KICAgICAgICByZXR1cm4gJzxiPicgKyB0aGlzLnNlcmllcy5uYW1lICsgJzwvYj48YnIvPicgKw0KICAgICAgICAgICAgICAgJ0ZhaXhhIGV0w6FyaWE6IDxiPicgKyB0aGlzLnBvaW50LmNhdGVnb3J5ICsgJyBhbm9zPC9iPjxici8+JyArDQogICAgICAgICAgICAgICAnUG9wdWxhw6fDo286IDxiPicgKyBIaWdoY2hhcnRzLm51bWJlckZvcm1hdChNYXRoLmFicyh0aGlzLnkpLCAyKSArICcgbWlsaMO1ZXM8L2I+JzsNCiAgICAgIH0iKQ0KICAgICkgJT4lDQogICAgaGNfY3JlZGl0cygNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgdGV4dCA9ICJGb250ZTogSUJHRSDigJQgQ2Vuc28gRGVtb2dyw6FmaWNvIDIwMjIuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvIEJILiIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9DTEFSTywgZm9udFNpemUgPSAiMTBweCIpDQogICAgKSAlPiUNCiAgICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpDQp9DQoNCiMg4pSA4pSAIDMuIEVYVFJBw4fDg08gRSBPUkdBTklaQcOHw4NPIERPUyBEQURPUyBWSUEgU0lEUkEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpwb3BfcmF3IDwtIGdldF9zaWRyYSgNCiAgYXBpID0gIi90Lzk1MTQvbjEvYWxsL3YvOTMvcC8yMDIyL2MyLzQsNS9jMjg3L2FsbHh0Ig0KKQ0KDQpmYWl4YXNfc2lkcmEgPC0gYygNCiAgIjAgYSA0IGFub3MiLCAgICI1IGEgOSBhbm9zIiwgICAiMTAgYSAxNCBhbm9zIiwgIjE1IGEgMTkgYW5vcyIsDQogICIyMCBhIDI0IGFub3MiLCAiMjUgYSAyOSBhbm9zIiwgIjMwIGEgMzQgYW5vcyIsICIzNSBhIDM5IGFub3MiLA0KICAiNDAgYSA0NCBhbm9zIiwgIjQ1IGEgNDkgYW5vcyIsICI1MCBhIDU0IGFub3MiLCAiNTUgYSA1OSBhbm9zIiwNCiAgIjYwIGEgNjQgYW5vcyIsICI2NSBhIDY5IGFub3MiLCAiNzAgYSA3NCBhbm9zIiwgIjc1IGEgNzkgYW5vcyIsDQogICI4MCBhIDg0IGFub3MiLCAiODUgYSA4OSBhbm9zIiwgIjkwIGEgOTQgYW5vcyIsICI5NSBhIDk5IGFub3MiLA0KICAiMTAwIGFub3Mgb3UgbWFpcyINCikNCg0Kbml2ZWlzX2ZhaXhhcyA8LSBjKA0KICAiMOKAkzQiLCAiNeKAkzkiLCAiMTDigJMxNCIsICIxNeKAkzE5IiwgIjIw4oCTMjQiLCAiMjXigJMyOSIsICIzMOKAkzM0IiwgIjM14oCTMzkiLA0KICAiNDDigJM0NCIsICI0NeKAkzQ5IiwgIjUw4oCTNTQiLCAiNTXigJM1OSIsICI2MOKAkzY0IiwgIjY14oCTNjkiLCAiNzDigJM3NCIsDQogICI3NeKAkzc5IiwgIjgw4oCTODQiLCAiODXigJM4OSIsICI5MOKAkzk0IiwgIjk14oCTOTkiLCAiMTAwKyINCikNCg0KbWFwYV9mYWl4YXMgPC0gc2V0TmFtZXMobml2ZWlzX2ZhaXhhcywgZmFpeGFzX3NpZHJhKQ0KDQpjb2xfaWRhZGUgPC0gaW50ZXJzZWN0KGMoIkdydXBvIGRlIGlkYWRlIiwgIklkYWRlIiksIG5hbWVzKHBvcF9yYXcpKVsxXQ0KaWYgKGlzLm5hKGNvbF9pZGFkZSkpIHN0b3AoIkNvbHVuYSBkZSBpZGFkZSBuw6NvIGVuY29udHJhZGEuIikNCg0KcGlyYW1pZGUgPC0gcG9wX3JhdyAlPiUNCiAgc2VsZWN0KA0KICAgIHNleG9fY29kICA9IGBTZXhvIChDw7NkaWdvKWAsDQogICAgaWRhZGVfc3RyID0gYWxsX29mKGNvbF9pZGFkZSksDQogICAgcG9wICAgICAgID0gVmFsb3INCiAgKSAlPiUNCiAgZmlsdGVyKGlkYWRlX3N0ciAlaW4lIGZhaXhhc19zaWRyYSkgJT4lDQogIG11dGF0ZSgNCiAgICBwb3AgICAgICAgID0gYXMubnVtZXJpYyhwb3ApLA0KICAgIHNleG9fbGFiZWwgPSBjYXNlX3doZW4oDQogICAgICBhcy5jaGFyYWN0ZXIoc2V4b19jb2QpID09ICI0IiB+ICJIb21lbnMiLA0KICAgICAgYXMuY2hhcmFjdGVyKHNleG9fY29kKSA9PSAiNSIgfiAiTXVsaGVyZXMiLA0KICAgICAgVFJVRSB+IE5BX2NoYXJhY3Rlcl8NCiAgICApLA0KICAgIGZhaXhhID0gZmFjdG9yKG1hcGFfZmFpeGFzW2lkYWRlX3N0cl0sIGxldmVscyA9IG5pdmVpc19mYWl4YXMpDQogICkgJT4lDQogIGZpbHRlcighaXMubmEoc2V4b19sYWJlbCksICFpcy5uYShmYWl4YSksICFpcy5uYShwb3ApKSAlPiUNCiAgZ3JvdXBfYnkoc2V4b19sYWJlbCwgZmFpeGEpICU+JQ0KICBzdW1tYXJpc2UocG9wX21pID0gcm91bmQoc3VtKHBvcCkgLyAxZTYsIDMpLCAuZ3JvdXBzID0gImRyb3AiKQ0KDQpob21lbnMgICA8LSBwaXJhbWlkZSAlPiUgZmlsdGVyKHNleG9fbGFiZWwgPT0gIkhvbWVucyIpICAgJT4lIGFycmFuZ2UoZmFpeGEpICU+JSBwdWxsKHBvcF9taSkNCm11bGhlcmVzIDwtIHBpcmFtaWRlICU+JSBmaWx0ZXIoc2V4b19sYWJlbCA9PSAiTXVsaGVyZXMiKSAlPiUgYXJyYW5nZShmYWl4YSkgJT4lIHB1bGwocG9wX21pKQ0KDQpsaW1pdGVfZWl4byA8LSBjZWlsaW5nKG1heChjKGhvbWVucywgbXVsaGVyZXMpKSArIDAuNSkNCg0KIyDilIDilIAgNC4gQ09OU1RSVcOHw4NPIERPIFBMT1Qg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX3BpcmFtaWRlXzIwMjIgPC0gaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHR5cGUgPSAiYmFyIiwNCiAgICBhbmltYXRpb24gPSBGQUxTRQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgSG9tZW5zIChBenVsIEliTWFjcm8g4oCUIExhZG8gRXNxdWVyZG8gLyBWYWxvcmVzIE5lZ2F0aXZvcykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lICAgICAgICA9ICJIb21lbnMiLA0KICAgIGRhdGEgICAgICAgID0gYXMubGlzdCgtaG9tZW5zKSwNCiAgICBjb2xvciAgICAgICA9IElCX0FaVUxfQkFTRSwNCiAgICBib3JkZXJXaWR0aCA9IDANCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIE11bGhlcmVzIChBbWFyZWxvIEliTWFjcm8g4oCUIExhZG8gRGlyZWl0byAvIFZhbG9yZXMgUG9zaXRpdm9zKQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgICAgICAgID0gIk11bGhlcmVzIiwNCiAgICBkYXRhICAgICAgICA9IGFzLmxpc3QobXVsaGVyZXMpLA0KICAgIGNvbG9yICAgICAgID0gSUJfQU1BUkVMTywNCiAgICBib3JkZXJXaWR0aCA9IDANCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIGNhdGVnb3JpZXMgPSBuaXZlaXNfZmFpeGFzLA0KICAgIHJldmVyc2VkICAgPSBGQUxTRSwNCiAgICB0aXRsZSAgICAgID0gbGlzdCh0ZXh0ID0gTlVMTCkNCiAgKSAlPiUNCiAgDQogIGhjX3lBeGlzKA0KICAgIG1pbiA9IC1saW1pdGVfZWl4bywNCiAgICBtYXggPSBsaW1pdGVfZWl4bywNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCh2YWx1ZSA9IDAsIHdpZHRoID0gMS41LCBjb2xvciA9IElCX0NJTlpBX0NMQVJPLCB6SW5kZXggPSA1KQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGJhciA9IGxpc3QoDQogICAgICBncm91cGluZyAgICAgPSBUUlVFLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMCwNCiAgICAgIHBvaW50UGFkZGluZyA9IDAuMTUsDQogICAgICBzdGFja2luZyAgICAgPSAibm9ybWFsIg0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX2Zvcm1hdGFyX3BpcmFtaWRlKA0KICAgIHRpdHVsbyAgICA9ICJQaXLDom1pZGUgRXTDoXJpYSDigJQgQnJhc2lsIChDZW5zbyAyMDIyKSIsDQogICAgc3VidGl0dWxvID0gIlBvcHVsYcOnw6NvIHJlc2lkZW50ZSBwb3Igc2V4byBlIGZhaXhhcyBldMOhcmlhcyBxdWlucXVlbmFpcyAoZW0gbWlsaMO1ZXMgZGUgcGVzc29hcykiLA0KICAgIHRleHRvX3kgICA9ICJQb3B1bGHDp8OjbyAoZW0gbWlsaMO1ZXMpIg0KICApDQoNCmdyYWZpY29fcGlyYW1pZGVfMjAyMg0KYGBgDQoNCkFuYWxpc2FuZG8gbWFpcyBhIGZ1bmRvIGFzIHJhesO1ZXMgcGFyYSBhIHRyYW5zacOnw6NvIGRlbW9ncsOhZmljYSBhY2VsZXJhZGEsIGZpY2EgbsOtdGlkbyB1bWEgZ3JhbmRlIG11ZGFuw6dhIHRhbnRvIG5hcyB0YXhhcyBkZSBuYXRhbGlkYWRlIGUgZmVjdW5kaWRhZGUgY29tIHRhbWLDqW0gbmFzIHRheGFzIGRlIG1vcnRhbGlkYWRlLCBxdWUgYmFzaWNhbWVudGUgc2UgaW52ZXJ0ZXJhbSBhbyBsb25nbyBkZXNzZXMgNDAgYW5vcy4NCiANCkEgVGF4YSBkZSBOYXRhbGlkYWRlIGFwcmVzZW50b3UgdW1hIHF1ZWRhIHNpZ25pZmljYXRpdmEgbmVzc2UgcGVyw61vZG8gZGUgYW7DoWxpc2UsIGNvbSBvIG1lbm9yIG7Dum1lcm8gZGUgbmFzY2ltZW50b3MgZW0gcXVhc2UgNTAgYW5vcyBlbSAyMDIzLCBzZW5kbyBhIHF1aW50YSBxdWVkYSBhbnVhbCBzZWd1aWRhIG5hIG5hdGFsaWRhZGUuIE8gbWVub3IgbsO6bWVybyBoYXZpYSBzaWRvIGVtIDE5NzYgcXVlIGVyYSAyLDQ2NyBtaWxow7VlcyBlIGFnb3JhIGVtIDIwMjMgbyBuw7ptZXJvIGRlIHJlZ2lzdHJvcyBkZSBuYXNjaW1lbnRvcyBmb2kgZW0gdG9ybm8gZGUgMiw1MTggbWlsaMO1ZXMuIChPKQ0KIA0KQSBUYXhhIGRlIEZlY3VuZGlkYWRlIHRhbWLDqW0gY2FpdSwgcG9yw6ltIGlzc28gbsOjbyDDqSB1bSBmZW7DtG1lbm8gYXBlbmFzIHByZXNlbnRlIG5vIEJyYXNpbCwgbWFzIHNpbSBkbyBtdW5kbyBpbnRlaXJvLiBFbSAxOTUwLCBhIHRheGEgZXJhIGVtIHRvcm5vIGRlIHNlaXMgZmlsaG9zIHBvciBtdWxoZXIsIGUgZGUgY2luY28gZmlsaG9zIG5vIG11bmRvLiBTZXRlIGTDqWNhZGFzIGRlcG9pcywgZXNzZSBpbmRpY2Fkb3IgZGVjYWl1IHBhcmEgYXBlbmFzIDEsNiBwb3IgbXVsaGVyLCBhYmFpeG8gZG8gY2hhbWFkbyBuw612ZWwgZGUgcmVwb3Npw6fDo28sIHVtIHBhdGFtYXIgMiwxIGZpbGhvcyBuZWNlc3PDoXJpb3MgcGFyYSBxdWUgYSBwcsOzeGltYSBnZXJhw6fDo28gc3Vic3RpdHVhIGEgYW50ZXJpb3Igc2VtIGFqdWRhIGRhIGltaWdyYcOnw6NvLiBBIHF1ZWRhIHNlIGluaWNpb3UgZHVyYW50ZSBhIGTDqWNhZGEgZGUgNzAsIHNhaW5kbyBkZSA1LDYgbm8gZmluYWwgZG9zIGFub3MgNjAgcGFyYSA0LDIgZmlsaG9zIGVtIDE5NzYsIGFicmFuZ2VuZG8gdG9kYXMgYXMgcmVnacO1ZXMgZG8gdGVycml0w7NyaW8gYnJhc2lsZWlyby4gKihHcsOhZmljbyAzKSogDQogDQoqKkdyw6FmaWNvIDMqKg0KIA0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogVGF4YSBkZSBGZWN1bmRpZGFkZSBUb3RhbCBubyBCcmFzaWwgKDE5NTDigJMyMDI2KQ0KIyBJZGVudGlkYWRlIFZpc3VhbCBPZmljaWFsOiBQYWRyw6NvIEliTWFjcm8gQkggKE1hbnVhbCBkZSBNYXJjYSkNCiMgRm9udGU6IElCR0UgZSBOYcOnw7VlcyBVbmlkYXMgKFVOIFdQUCBSZXYuIDIwMjQpDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFByZXZlbsOnw6NvIHBhcmEgY2FtaW5ob3MgdGVtcG9yw6FyaW9zIG5vIFdpbmRvd3MgY29tIGFjZW50dWHDp8Ojbw0KZGlyLmNyZWF0ZSgiQzovUnRlbXAiLCBzaG93V2FybmluZ3MgPSBGQUxTRSkNClN5cy5zZXRlbnYoVE1QRElSID0gIkM6L1J0ZW1wIiwgVE1QID0gIkM6L1J0ZW1wIiwgVEVNUCA9ICJDOi9SdGVtcCIpDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyDilIDilIAgMS4gREVGSU5Jw4fDg08gREEgUEFMRVRBIElOU1RJVFVDSU9OQUwgKEdVSUEgREUgTUFSQ0EpIOKUgOKUgOKUgOKUgOKUgOKUgA0KSUJfQU1BUkVMTyAgICAgIDwtICIjRkZCODFGIiAgIyBBbWFyZWxvIEliTWFjcm8gKE7DrXZlbCBkZSBSZXBvc2nDp8OjbyAvIERlc3RhcXVlcykNCklCX0FaVUxfQkFTRSAgICA8LSAiIzAyMDIzQyIgICMgQXp1bCBJYk1hY3JvIChTw6lyaWUgUHJpbmNpcGFsIC8gVMOtdHVsb3MpDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgQXp1bCBNw6lkaW8gZGUgYXBvaW8NCklCX0FaVUxfQ0xBUk8gICA8LSAiIzZCOEJBNCIgICMgQXp1bCBDbGFybyBjb21wbGVtZW50YXINCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSIgICMgVGV4dG9zLCBlaXhvcyBlIHN1YnTDrXR1bG9zDQpJQl9DSU5aQV9DTEFSTyAgPC0gIiNBNkE2QTYiICAjIExpbmhhcyBkZSBncmFkZSwgZWl4b3MgZSBjcsOpZGl0b3MNCg0KIyDilIDilIAgMi4gREFET1MgSElTVMOTUklDT1MgRSBQUk9KRVRBRE9TIERBIFRGVCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmRmX2ZlY3VuZGlkYWRlIDwtIHRpYmJsZSgNCiAgYW5vID0gYygxOTUwLCAxOTU1LCAxOTYwLCAxOTY1LCAxOTcwLCAxOTc1LCAxOTgwLCAxOTg1LCAxOTkwLCAxOTk1LCAyMDAwLCAyMDA1LCAyMDEwLCAyMDE1LCAyMDIwLCAyMDI1LCAyMDI2KSwNCiAgdGZ0ID0gYyg2LjEyLCA2LjEwLCA2LjA2LCA1LjY2LCA0LjkzLCA0LjQxLCA0LjAxLCAzLjQ4LCAyLjkwLCAyLjU4LCAyLjI3LCAxLjk1LCAxLjgxLCAxLjgwLCAxLjY2LCAxLjYyLCAxLjYxKQ0KKQ0KDQojIOKUgOKUgCAzLiBDT05TVFJVw4fDg08gRE8gUExPVCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmdyYWZpY29fZmVjdW5kaWRhZGUgPC0gaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgUHJpbmNpcGFsOiBUYXhhIGRlIEZlY3VuZGlkYWRlIFRvdGFsDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJUYXhhIGRlIEZlY3VuZGlkYWRlIFRvdGFsIChURlQpIiwNCiAgICBkYXRhID0gZGZfZmVjdW5kaWRhZGUkdGZ0LA0KICAgIGNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgcmFkaXVzID0gNCwNCiAgICAgIHN5bWJvbCA9ICJjaXJjbGUiLA0KICAgICAgZmlsbENvbG9yID0gSUJfQVpVTF9CQVNFDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IGFzLmNoYXJhY3RlcihkZl9mZWN1bmRpZGFkZSRhbm8pLA0KICAgIGdyaWRMaW5lV2lkdGggPSAxLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSA2LCAjIEFubyAxOTgwIChNYXJjbyBDYXJ2YWxobykNCiAgICAgICAgY29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgICAgd2lkdGggPSAxLjUsDQogICAgICAgIGRhc2hTdHlsZSA9ICJTaG9ydERhc2giLA0KICAgICAgICB6SW5kZXggPSAzLA0KICAgICAgICBsYWJlbCA9IGxpc3QoDQogICAgICAgICAgdGV4dCA9ICJNYXJjbyBkZSBDYXJ2YWxobyAoMTk4MCkiLA0KICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIpLA0KICAgICAgICAgIHZlcnRpY2FsQWxpZ24gPSAidG9wIiwNCiAgICAgICAgICB5ID0gMTUNCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHRleHQgPSAiZmlsaG9zIHBvciBtdWxoZXIiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApLA0KICAgIG1pbiA9IDEuMCwNCiAgICBtYXggPSA2LjUsDQogICAgdGlja0ludGVydmFsID0gMS4wLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIGZvcm1hdCA9ICJ7dmFsdWU6LjFmfSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgDQogICAgIyBMaW5oYSBkZSBOw612ZWwgZGUgUmVwb3Npw6fDo28gUG9wdWxhY2lvbmFsICgyLDEgZmlsaG9zIHBvciBtdWxoZXIpDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlID0gMi4xLA0KICAgICAgICBjb2xvciA9IElCX0FNQVJFTE8sDQogICAgICAgIHdpZHRoID0gMiwNCiAgICAgICAgZGFzaFN0eWxlID0gIkRhc2giLA0KICAgICAgICB6SW5kZXggPSA0LA0KICAgICAgICBsYWJlbCA9IGxpc3QoDQogICAgICAgICAgdGV4dCA9ICJOw612ZWwgZGUgcmVwb3Npw6fDo28gcG9wdWxhY2lvbmFsICgyLDEpIiwNCiAgICAgICAgICBhbGlnbiA9ICJyaWdodCIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KA0KICAgICAgICAgICAgY29sb3IgPSBJQl9BWlVMX0JBU0UsDQogICAgICAgICAgICBmb250U2l6ZSA9ICIxMHB4IiwNCiAgICAgICAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICAgICAgICApLA0KICAgICAgICAgIHggPSAtMTAsDQogICAgICAgICAgeSA9IC02DQogICAgICAgICkNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIA0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlRheGEgZGUgRmVjdW5kaWRhZGUgVG90YWwgbm8gQnJhc2lsICgxOTUw4oCTMjAyNikiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJib2xkIiwgZm9udFNpemUgPSAiMThweCIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiTsO6bWVybyBtw6lkaW8gZGUgZmlsaG9zIHBvciBtdWxoZXIgfCBMaW5oYSB0cmFjZWphZGEgYW1hcmVsYTogdGF4YSBtw61uaW1hIGRlIHJlcG9zacOnw6NvIGRlbW9ncsOhZmljYSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBoZWFkZXJGb3JtYXQgPSAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMnB4Jz48Yj5Bbm8ge3BvaW50LmtleX08L2I+PC9zcGFuPjxici8+IiwNCiAgICBwb2ludEZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6e3Nlcmllcy5jb2xvcn0nPuKXjzwvc3Bhbj4gVEZUOiA8Yj57cG9pbnQueTouMmZ9IGZpbGhvcyBwb3IgbXVsaGVyPC9iPjxici8+Ig0KICApICU+JQ0KICANCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIA0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IElCR0Ug4oCUIENlbnNvcyBEZW1vZ3LDoWZpY29zIGUgTmHDp8O1ZXMgVW5pZGFzIChVTiBXUFAgUmV2LiAyMDI0KS4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm8gQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9DTEFSTywgZm9udFNpemUgPSAiMTBweCIpDQogICkgJT4lDQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkNCg0KZ3JhZmljb19mZWN1bmRpZGFkZQ0KYGBgDQogDQpTZW1lbGhhbnRlIGEgdGF4YSBkZSBmZWN1bmRpZGFkZSwgYSBUYXhhIGRlIE1vcnRhbGlkYWRlIEluZmFudGlsIHRhbWLDqW0gcmVkdXppdSBjb25zaWRlcmFsdmVtZW50ZSBubyBwZXLDrW9kbyBhYm9yZGFkbywgY29tIGRlIDE0MiDDs2JpdG9zIHBhcmEgY2FkYSBtaWwgY2FkYSBtaWwgaGFiaXRhbnRlcywgZW0gMTk1MCBwYXNzYW5kbyBwYXJhIGFwZW5hcyAzMiBlbSAyMDE1LiAqKEdyw6FmaWNvIDQpKg0KIA0KRG8gb3V0cm8gbGFkbyB0ZW1vcyB1bSBncmFuZGUgYXVtZW50byBkYSBleHBlY3RhdGl2YSBkZSB2aWRhLCBtb3N0cmFuZG8gdW1hIGxvbmdldmlkYWRlIG1haW9yIGRvcyBpZG9zb3MuIEVzcGVyYS1zZSBxdWUgZW50cmUgMjAxNSBlIDIwMzAsIGEgcG9wdWxhw6fDo28gYWNpbWEgZGUgODUgYW5vcyBhdW1lbnRhcsOhIGVtIHVtIHJpdG1vIG1haXMgYWNlbGVyYWRvIHF1ZSBhIHBvcHVsYcOnw6NvIGVudHJlIHplcm8gZSBzZXNzZW50YSBhbm9zLiBBbMOpbSBkaXNzbywgZXN0aW1hLXNlIHF1ZSB0YW1iw6ltIGVtIDIwMzAsIDc4JSBkYXMgbW9ydGVzIG5vIEJyYXNpbCBvY29ycmVyw6NvIGNvbSBwZXNzb2FzIGFjaW1hIGRlIHNlc3NlbnRhIGFub3MsIHNlbmRvIHF1ZSBlbSAxOTUwIGEgcGFyY2VsYSBkYSBwb3B1bGHDp8OjbyBxdWUgdWx0cmFwYXNzYXZhIG9zIHNlc3NlbnRhIGFub3MgZXJhIGFwZW5hcyBkZSAxOCUuIERlIGFjb3JkbyBjb20gZGFkb3MgcmVjZW50ZXMgZG8gSUJHRSwgZXNzZSBhdmFuw6dvIGRhIGVzcGVyYW7Dp2EgZGUgdmlkYSBhaW5kYSBvY29ycmUsIGVzdGFuZG8gYWdvcmEgZW0gdG9ybm8gZGUgNzYsNCBwYXJhIGFtYm9zIG9zIHNleG9zLiAqKEdyw6FmaWNvIDUpKg0KDQoqKihHcsOhZmljbyA0KSoqDQogDQpgYGB7cn0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEdyw6FmaWNvOiBUYXhhIGRlIE1vcnRhbGlkYWRlIEluZmFudGlsICgxOTUw4oCTMjA3MCkNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBOYcOnw7VlcyBVbmlkYXMgKFVOIFdQUCkgZSBCTkRFUyBTZXRvcmlhbA0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBQcmV2ZW7Dp8OjbyBwYXJhIGNhbWluaG9zIHRlbXBvcsOhcmlvcyBubyBXaW5kb3dzIGNvbSBhY2VudHVhw6fDo28NCmRpci5jcmVhdGUoIkM6L1J0ZW1wIiwgc2hvd1dhcm5pbmdzID0gRkFMU0UpDQpTeXMuc2V0ZW52KFRNUERJUiA9ICJDOi9SdGVtcCIsIFRNUCA9ICJDOi9SdGVtcCIsIFRFTVAgPSAiQzovUnRlbXAiKQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQoNCiMg4pSA4pSAIDEuIERFRklOScOHw4NPIERBIFBBTEVUQSBJTlNUSVRVQ0lPTkFMIChHVUlBIERFIE1BUkNBKSDilIDilIDilIDilIDilIDilIANCklCX0FNQVJFTE8gICAgICA8LSAiI0ZGQjgxRiIgICMgQW1hcmVsbyBJYk1hY3JvIChEZXN0YXF1ZXMpDQpJQl9BWlVMX0JBU0UgICAgPC0gIiMwMjAyM0MiICAjIEF6dWwgSWJNYWNybyAoU8OpcmllIEJyYXNpbCAvIFTDrXR1bG9zKQ0KSUJfQlJBTkNPICAgICAgIDwtICIjRkZGRkZGIiAgIyBGdW5kbyBpbnN0aXR1Y2lvbmFsDQpJQl9BWlVMX01FRElPICAgPC0gIiMwMDJDNUUiICAjIEF6dWwgTcOpZGlvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfQ0xBUk8gICA8LSAiIzZCOEJBNCIgICMgU8OpcmllIE11bmRvDQpJQl9DSU5aQV9FU0NVUk8gPC0gIiMzQTNBM0EiICAjIFRleHRvcywgZWl4b3MgZSBzdWJ0w610dWxvcw0KSUJfQ0lOWkFfQ0xBUk8gIDwtICIjQTZBNkE2IiAgIyBTw6lyaWUgUGHDrXNlcyBEZXNlbnZvbHZpZG9zIC8gTGluaGFzIGRlIGdyYWRlDQoNCiMg4pSA4pSAIDIuIERBRE9TIERBIE1PUlRBTElEQURFIElORkFOVElMIChwb3IgMS4wMDAgbmFzY2lkb3Mgdml2b3MpIOKUgOKUgA0KZGZfbW9ydGFsaWRhZGUgPC0gdGliYmxlKA0KICBhbm8gPSBjKDE5NTAsIDE5NjAsIDE5NzAsIDE5ODAsIDE5OTAsIDIwMDAsIDIwMTAsIDIwMjAsIDIwMzAsIDIwNDAsIDIwNTAsIDIwNjAsIDIwNzApLA0KICBtdW5kbyA9IGMoMTQyLCAxMjIsIDk1LCA3OCwgNjUsIDUxLCAzNiwgMjgsIDIzLCAxOCwgMTUsIDEzLCAxMSksDQogIHBhaXNlc19kZXNlbnZvbHZpZG9zID0gYyg2MCwgMzUsIDIzLCAxNSwgMTAsIDcsIDUsIDQsIDMuNSwgMywgMi41LCAyLCAxLjgpLA0KICBicmFzaWwgPSBjKDEzNywgMTE1LCA5NSwgNzMsIDQ4LCAyNywgMTYsIDExLCA5LCA3LjUsIDYsIDUsIDQpDQopDQoNCiMg4pSA4pSAIDMuIENPTlNUUlXDh8ODTyBETyBQTE9UIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZ3JhZmljb19tb3J0YWxpZGFkZSA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICkgJT4lDQogIA0KICAjIFPDqXJpZSAxOiBNdW5kbyAoQXp1bCBDbGFybykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIk11bmRvIiwNCiAgICBkYXRhID0gZGZfbW9ydGFsaWRhZGUkbXVuZG8sDQogICAgY29sb3IgPSBJQl9BWlVMX0NMQVJPLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzLjUsIHN5bWJvbCA9ICJjaXJjbGUiKQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgMjogUGHDrXNlcyBEZXNlbnZvbHZpZG9zIChDaW56YSBDbGFybyAvIFJlZmVyw6puY2lhIEV4dGVybmEpDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJQYcOtc2VzIGRlc2Vudm9sdmlkb3MiLA0KICAgIGRhdGEgPSBkZl9tb3J0YWxpZGFkZSRwYWlzZXNfZGVzZW52b2x2aWRvcywNCiAgICBjb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIiwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzLjUsIHN5bWJvbCA9ICJzcXVhcmUiKQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgMzogQnJhc2lsIChBenVsIEliTWFjcm8gUHJpbmNpcGFsIOKAlCBEZXN0YXF1ZSkNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkJyYXNpbCIsDQogICAgZGF0YSA9IGRmX21vcnRhbGlkYWRlJGJyYXNpbCwNCiAgICBjb2xvciA9IElCX0FaVUxfQkFTRSwNCiAgICBsaW5lV2lkdGggPSAzLjUsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNC41LCBzeW1ib2wgPSAiZGlhbW9uZCIpDQogICkgJT4lDQogIA0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gYXMuY2hhcmFjdGVyKGRmX21vcnRhbGlkYWRlJGFubyksDQogICAgZ3JpZExpbmVXaWR0aCA9IDEsDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICBsaW5lQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICB0aWNrQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApLA0KICAgIHBsb3RMaW5lcyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB2YWx1ZSA9IDcsICMgQW5vIDIwMjAgKERpdmlzw6NvIGhpc3TDs3JpY28gLyBwcm9qZcOnw6NvKQ0KICAgICAgICBjb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgZGFzaFN0eWxlID0gIkRvdCIsDQogICAgICAgIHpJbmRleCA9IDMsDQogICAgICAgIGxhYmVsID0gbGlzdCgNCiAgICAgICAgICB0ZXh0ID0gIlByb2plw6fDtWVzIOKGkiIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMHB4IiksDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJ0b3AiLA0KICAgICAgICAgIHkgPSAxNQ0KICAgICAgICApDQogICAgICApDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICLDs2JpdG9zIHBvciBtaWwgbmFzY2lkb3Mgdml2b3MiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApLA0KICAgIG1pbiA9IDAsDQogICAgbWF4ID0gMTYwLA0KICAgIHRpY2tJbnRlcnZhbCA9IDIwLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIGZvcm1hdCA9ICJ7dmFsdWU6LC4wZn0iLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApDQogICkgJT4lDQogIA0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlRheGEgZGUgTW9ydGFsaWRhZGUgSW5mYW50aWwgbm8gQnJhc2lsIGUgbm8gTXVuZG8gKDE5NTDigJMyMDcwKSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICLDk2JpdG9zIGRlIG1lbm9yZXMgZGUgMSBhbm8gcG9yIG1pbCBuYXNjaWRvcyB2aXZvcyAoZGFkb3MgaGlzdMOzcmljb3MgZSBwcm9qZcOnw7VlcyBkYSBPTlUpIiwNCiAgICBhbGlnbiA9ICJsZWZ0IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICANCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGhlYWRlckZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEycHgnPjxiPkFubyB7cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4iLA0KICAgIHBvaW50Rm9ybWF0ID0gIjxzcGFuIHN0eWxlPSdjb2xvcjp7c2VyaWVzLmNvbG9yfSc+4pePPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueTouMWZ9IHBvciBtaWw8L2I+PGJyLz4iDQogICkgJT4lDQogIA0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiLA0KICAgIGl0ZW1TdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAibm9ybWFsIiwgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIA0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IE5hw6fDtWVzIFVuaWRhcyAoVU4gV1BQKSBlIEJOREVTIFNldG9yaWFsLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQpncmFmaWNvX21vcnRhbGlkYWRlDQpgYGANCiANCiAqKihHcsOhZmljbyA1KSoqDQogDQpgYGB7cn0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEdyw6FmaWNvOiBFc3BlcmFuw6dhIGRlIFZpZGEgbm8gQnJhc2lsICgxOTUw4oCTMjAyNikNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBXb3JsZG9tZXRlcnMsIE5hw6fDtWVzIFVuaWRhcyAoVU4gV1BQKSBlIElCR0UNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIE11bGhlcmVzIChEZXN0YXF1ZSkNCklCX0FaVUxfQkFTRSAgICA8LSAiIzAyMDIzQyIgICMgQW1ib3Mgb3Mgc2V4b3MgKFPDqXJpZSBQcmluY2lwYWwgLyBUw610dWxvcykNCklCX0JSQU5DTyAgICAgICA8LSAiI0ZGRkZGRiIgICMgRnVuZG8gaW5zdGl0dWNpb25hbA0KSUJfQVpVTF9NRURJTyAgIDwtICIjMDAyQzVFIiAgIyBBenVsIE3DqWRpbyBpbnN0aXR1Y2lvbmFsDQpJQl9BWlVMX0NMQVJPICAgPC0gIiM2QjhCQTQiICAjIEhvbWVucyAoQXBvaW8gZ3LDoWZpY28pDQpJQl9DSU5aQV9FU0NVUk8gPC0gIiMzQTNBM0EiICAjIFRleHRvcywgZWl4b3MgZSBzdWJ0w610dWxvcw0KSUJfQ0lOWkFfQ0xBUk8gIDwtICIjQTZBNkE2IiAgIyBMaW5oYXMgZGUgZ3JhZGUsIGVpeG9zIGUgY3LDqWRpdG9zDQoNCiMg4pSA4pSAIDIuIERBRE9TIERBIEVTUEVSQU7Dh0EgREUgVklEQSAoZW0gYW5vcykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpkZl9leHBlY3RhdGl2YSA8LSB0aWJibGUoDQogIGFubyA9IGMoMTk1MCwgMTk1NSwgMTk2MCwgMTk2NSwgMTk3MCwgMTk3NSwgMTk4MCwgMTk4NSwgMTk5MCwgMTk5NSwgMjAwMCwgMjAwNSwgMjAxMCwgMjAxNSwgMjAyMCwgMjAyNSwgMjAyNiksDQogIGhvbWVucyA9IGMoNDYuNiwgNDguNywgNTEuMCwgNTMuMywgNTUuMywgNTcuMiwgNTguOCwgNjAuMywgNjEuOCwgNjMuNCwgNjUuMywgNjcuMiwgNjkuMiwgNzEuMCwgNzAuMiwgNzIuNSwgNzIuOCksDQogIG11bGhlcmVzID0gYyg0OS44LCA1Mi4xLCA1NC42LCA1Ny4wLCA1OS4xLCA2MS4zLCA2My4zLCA2NS4yLCA2Ny4yLCA2OS4zLCA3MS41LCA3My42LCA3NS42LCA3Ny41LCA3Ni43LCA3OC44LCA3OS4xKSwNCiAgYW1ib3MgPSBjKDQ4LjEsIDUwLjQsIDUyLjgsIDU1LjEsIDU3LjIsIDU5LjIsIDYxLjAsIDYyLjcsIDY0LjUsIDY2LjMsIDY4LjQsIDcwLjQsIDcyLjQsIDc0LjIsIDczLjUsIDc1LjYsIDc1LjkpDQopDQoNCiMg4pSA4pSAIDMuIENPTlNUUlXDh8ODTyBETyBQTE9UIENPTUJJTkFETyAoQ09MVU5BICsgTElOSEEpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZ3JhZmljb19leHBlY3RhdGl2YSA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKQ0KICApICU+JQ0KICANCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgY29sdW1uID0gbGlzdCgNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMTIsDQogICAgICBwb2ludFBhZGRpbmcgPSAwLjA1LA0KICAgICAgYm9yZGVyV2lkdGggID0gMA0KICAgICkNCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIDE6IEhvbWVucyAoQ29sdW5hIOKAlCBBenVsIENsYXJvKQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgID0gIkhvbWVucyIsDQogICAgdHlwZSAgPSAiY29sdW1uIiwNCiAgICBkYXRhICA9IGRmX2V4cGVjdGF0aXZhJGhvbWVucywNCiAgICBjb2xvciA9IElCX0FaVUxfQ0xBUk8NCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIDI6IE11bGhlcmVzIChDb2x1bmEg4oCUIEFtYXJlbG8gSWJNYWNybykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lICA9ICJNdWxoZXJlcyIsDQogICAgdHlwZSAgPSAiY29sdW1uIiwNCiAgICBkYXRhICA9IGRmX2V4cGVjdGF0aXZhJG11bGhlcmVzLA0KICAgIGNvbG9yID0gSUJfQU1BUkVMTw0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgMzogQW1ib3Mgb3Mgc2V4b3MgKExpbmhhIOKAlCBBenVsIEliTWFjcm8gQmFzZSkNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lICAgICAgPSAiQW1ib3Mgb3Mgc2V4b3MiLA0KICAgIHR5cGUgICAgICA9ICJsaW5lIiwNCiAgICBkYXRhICAgICAgPSBkZl9leHBlY3RhdGl2YSRhbWJvcywNCiAgICBjb2xvciAgICAgPSBJQl9BWlVMX0JBU0UsDQogICAgbGluZVdpZHRoID0gMywNCiAgICB6SW5kZXggICAgPSAzLA0KICAgIG1hcmtlciAgICA9IGxpc3QoDQogICAgICBlbmFibGVkICAgPSBUUlVFLA0KICAgICAgcmFkaXVzICAgID0gNC41LA0KICAgICAgZmlsbENvbG9yID0gSUJfQlJBTkNPLA0KICAgICAgbGluZVdpZHRoID0gMi41LA0KICAgICAgbGluZUNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgICAgc3ltYm9sICAgID0gImNpcmNsZSINCiAgICApDQogICkgJT4lDQogIA0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzICAgID0gYXMuY2hhcmFjdGVyKGRmX2V4cGVjdGF0aXZhJGFubyksDQogICAgZ3JpZExpbmVXaWR0aCA9IDEsDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICBsaW5lQ29sb3IgICAgID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yICAgICA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyAgICAgICAgPSBsaXN0KA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ICA9ICJhbm9zIGRlIHZpZGEiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApLA0KICAgIG1pbiAgICAgICAgICAgPSA0MCwNCiAgICBtYXggICAgICAgICAgID0gODUsDQogICAgdGlja0ludGVydmFsICA9IDEwLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yICAgICA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyAgICAgICAgPSBsaXN0KA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZTouMGZ9IiwNCiAgICAgIHN0eWxlICA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgID0gIkVzcGVyYW7Dp2EgZGUgVmlkYSBhbyBOYXNjZXIgbm8gQnJhc2lsICgxOTUw4oCTMjAyNikiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJib2xkIiwgZm9udFNpemUgPSAiMThweCIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgID0gIkV2b2x1w6fDo28gaGlzdMOzcmljYSBlIHByb2plw6fDtWVzIHBvciBzZXhvIGUgbcOpZGlhIGFncmVnYWRhIChlbSBhbm9zKSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkICAgICAgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgID0gVFJVRSwNCiAgICBoZWFkZXJGb3JtYXQgPSAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMnB4Jz48Yj5Bbm8ge3BvaW50LmtleX08L2I+PC9zcGFuPjxici8+IiwNCiAgICBwb2ludEZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6e3Nlcmllcy5jb2xvcn0nPuKXjzwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnk6LjFmfSBhbm9zPC9iPjxici8+Ig0KICApICU+JQ0KICANCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgICAgICAgPSBUUlVFLA0KICAgIGFsaWduICAgICAgICAgPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ICAgICAgICA9ICJob3Jpem9udGFsIiwNCiAgICBpdGVtU3R5bGUgICAgID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCAgICA9ICJGb250ZTogSUJHRSwgTmHDp8O1ZXMgVW5pZGFzIChVTiBXUFApIGUgV29ybGRvbWV0ZXJzLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlICAgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sIGZvbnRTaXplID0gIjEwcHgiKQ0KICApICU+JQ0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpDQoNCmdyYWZpY29fZXhwZWN0YXRpdmENCmBgYA0KIA0KVG9kb3Mgb3MgaW5kaWNhZG9yZXMgcmVzcG9uZGVtIGEgZGl2ZXJzb3MgZmF0b3JlcyBxdWUgY29tZcOnYXJhbSBhIG9jb3JyZXIgbmEgbWV0YWRlIGRvIHPDqWN1bG8gcGFzc2FkbyBlIHF1ZSBjdWxtaW5hbSBlbSByZWZsZXhvcyBhdMOpIGhvamUsIGUgcXVlIHJlc3VsdGFyYW0gcHJpbmNpcGFsbWVudGUgbmEgdHJhbnNpw6fDo28gZGVtb2dyw6FmaWNhIGFuYWxpc2FkYSBuZXNzZSByZWxhdMOzcmlvLiANCg0KVW0gZG9zIHByaW5jaXBhaXMgc2VuZG8gYSBjb250cmFjZXDDp8OjbyBxdWUgaW1wYWN0YSBkaXJldGFtZW50ZSBhIGZlY3VuZGlkYWRlIGUgYSBuYXRhbGlkYWRlLCBjb20gbyBhY2Vzc28gw6AgbWV0b2RvcyBjb250cmFjZXB0aXZvcyBhIG1hdGVybmlkYWRlIHNlIHRvcm5vdSBhbGdvIHBsYW5lamFkbyBlbnRyZSBvcyBjYXNhaXMsIGUgY29tbyBjb25zZXF1w6puY2lhIG8gbsO6bWVybyBkZSBmaWxob3MgcG9yIG11bGhlciBjYWl1IGluc3RpdGl2YW1lbnRlLg0KIA0KTyBmYXRvciBlY29uw7RtaWNvIHRhbWLDqW0gdGVtIGdyYW5kZSBwZXNvIG5lc3NhIGFuw6FsaXNlLCBwb2lzIGNyaWFyIHVtIGZpbGhvIHByaW5jaXBhbG1lbnRlIG5vIEJyYXNpbCwgc2VuZG8gY29uc2lkZXJhZG8gcXVhc2UgdHLDqnMgdmV6ZXMgbWFpcyBjYXJvIGRvIHF1ZSBow6EgMjUgYW5vcywgY29tIG8gY3VzdG8gdG90YWwgYXR1YWxtZW50ZSB2YXJpYW5kbyBlbnRyZSBSJCAyMzkgbWlsIGUgUiQgMyw2IG1pbGjDtWVzIGRlIHVtYSBjcmlhbsOnYSBkbyBuYXNjaW1lbnRvIGF0w6kgb3MgMTggYW5vcywgY29tIGEgY29udGEgdG90YWwgc3ViaW5kbyBjYWRhIHZleiBtYWlzLg0KIA0KQWzDqW0gZGlzc28sIG8gcGFwZWwgZGEgbXVsaGVyIG5vIG1lcmNhZG8gZGUgdHJhYmFsaG8gZmV6IGNvbSBxdWUgYXMgcHJpb3JpZGFkZXMgZm9zc2VtIHJlZGVzZW5oYWRhcywgY29tIGNhcnJlaXJhLCBmb3JtYcOnw6NvLCBhdXRvbm9taWEgZmluYW5jZWlyYSBkZW50cm8gb3V0cm9zIGVudHJhbmRvIGVtIGRlc3RhcXVlIGVtIHVtIGNlbsOhcmlvIG9uZGUgw6AgdmlkYSBmYW1pbGlhciBkZSBjdWlkYWRvIG9zIGZpbGhvcyBhbnRpZ2FtZW50ZSBlcmEgYSBtYWlvciBwcmlvcmlkYWRlLg0KDQpTb2JyZSBhIHF1ZWRhIGRhIG1vcnRhbGlkYWRlIGluZmFudGlsIGUgZG8gYXVtZW50byBkYSBxdWFsaWRhZGUgZGUgdmlkYSwgcG9kZS1zZSBhZmlybWFyIHF1ZSBhIGV4cGFuc8OjbywgZG8gc2FuZWFtZW50byBiw6FzaWNvIGUgcmVkZXMgZGUgYXRlbsOnw6NvIHByaW3DoXJpYSAocHJvZ3JhbWFzIGRlIHZhY2luYcOnw6NvIGUgcHLDqS1uYXRhbCksIHByb21vdmVyYW0gw6Agc3VhIHF1ZWRhIGUgcXVlIGNvbnNlcXVlbnRlbWVudGUgYWNhcnJldG91IGVtIHVtIGF1bWVudG8gZGEgZXhwZWN0YXRpdmEgZGEgcG9wdWxhw6fDo28gbWFpcyBpZG9zYSwgZGV2aWRvIGEgZXNzZSBhdW1lbnRvIGRlIHBvbMOtdGljYXMgcMO6YmxpY2FzIHZvbHRhZGFzIHBhcmEgYSBxdWFsaWRhZGUgZGUgdmlkYSBlIHNhw7pkZS4NCg0KT2JzZXJ2YS1zZSBxdWUgZGVwb2lzIGRlc3NhIGdyYW5kZSBhbsOhbGlzZSBhIHRyYW5zacOnw6NvIGRlbW9ncsOhZmljYSBhcHJlc2VudGEgZW0gc3VhIGdyYW5kZSBtYWlvcmlhIHVtIHBhZHLDo28gcXVlIHNlIGVzdGVuZGV1IG7Do28gYXBlbmFzIG5vIEJyYXNpbCBtYXMgc2ltIHBhcmEgb3V0cm9zIHBhw61zZXMgZSBjb250aW5lbnRlcywgYWxnbyBxdWUgc2Vyw6EgYWJvcmRhZG8gYW8gZmluYWwgZG8gcmVsYXTDs3Jpby4gTyBhcnRpZ28gIkV2b2x1w6fDo28gZGVtb2dyw6FmaWNhIHJlY2VudGUgbm8gQnJhc2lsIiBkbyBwcm9mZXNzb3IgSm9zw6kgQWxiZXJ0byBNYWdubyBkZSBDYXJ2YWxobyBwdWJsaWNhZG8gZW0gMTk4MCwgZm9pIG8gcHJpbWVpcm8gYSBwcm92YXIgZXNzYSByw6FwaWRhIGUgZGluw6JtaWNhIG11ZGFuw6dhIG5hIGRlbW9ncmFmaWEgYnJhc2lsZWlyYS4gQXRyYXbDqXMgZGUgc2V1IGVzdHVkbyBmb2kgcG9zc8OtdmVsIGVzdGFiZWxlY2VyIGVtcGlyaWNhbWVudGUgbyBwYWRyw6NvIGVzcGVjw61maWNvIGRhIHRyYW5zacOnw6NvIGRlbW9ncsOhZmljYSBicmFzaWxlaXJhLg0KDQogIDEuIFJ1cHR1cmEgZG8gUmVnaW1lIEhpc3TDs3JpY28gZGUgRXF1aWzDrWJyaW8gSm92ZW0NCkF0w6kgMTk3MCwgbyBCcmFzaWwgbWFudGluaGEgdW0gcGFkcsOjbyBkZW1vZ3LDoWZpY28gY2FyYWN0ZXJpemFkbyBwb3IgcXVlZGEgbmEgbW9ydGFsaWRhZGUgZSBmZWN1bmRpZGFkZSBjcm9uaWNhbWVudGUgZWxldmFkYSwgbyBxdWUgZ2VyYXZhIGFsdG8gY3Jlc2NpbWVudG8gcG9wdWxhY2lvbmFsIGNvbSBlc3RydXR1cmEgZXTDoXJpYSBjb25zdGFudGUgKH41MSUgZGEgcG9wdWxhw6fDo28gY29tIG1lbm9zIGRlIDIwIGFub3MpLiBBIHBhcnRpciBkZSAxOTcwLCBlc3NlIHBhZHLDo28gc2Ugcm9tcGUgY29tIG8gaW7DrWNpbyBkZSB1bSBkZWNsw61uaW8gYWNlbGVyYWRvIGRhIGZlY3VuZGlkYWRlLiAgDQoNCiAgMi4gUXVlZGEgR2VuZXJhbGl6YWRhIGRhIEZlY3VuZGlkYWRlDQpBIFRheGEgZGUgRmVjdW5kaWRhZGUgVG90YWwgY2FpdSBjZXJjYSBkZSAyNCUgZW50cmUgMTk2NS83MCBlIDE5NzEvNzYgZW0gdG9kYXMgYXMgcmVnacO1ZXMgYnJhc2lsZWlyYXMuIFBvciBhYnJhbmdlciBhIG1haW9yaWEgZGEgcG9wdWxhw6fDo28gbmFjaW9uYWwsIGVzc2UgZGVjbMOtbmlvIGF0aW5naXUgb2JyaWdhdG9yaWFtZW50ZSBhcyBjbGFzc2VzIHNvY2lhaXMgZGUgbWVub3IgcmVuZGEuICANCg0KICAzLiBFc3RyZWl0YW1lbnRvIEFjZWxlcmFkbyBkYSBCYXNlIGRhIFBpcsOibWlkZQ0KICBBIHJlZHXDp8OjbyBubyBuw7ptZXJvIGRlIGZpbGhvcyBvY29ycmV1IGEgdW0gcml0bW8gbWFpcyByw6FwaWRvIGRvIHF1ZSBvIGNyZXNjaW1lbnRvIGRvIGNvbnRpbmdlbnRlIGRlIG11bGhlcmVzIGVtIGlkYWRlIGbDqXJ0aWwuIElzc28gZ2Vyb3UgdW0gZWZlaXRvIGltZWRpYXRvIG5hIGJhc2UgZGEgcGlyw6JtaWRlIGV0w6FyaWEsIGZhemVuZG8gY29tIHF1ZSBvIG7Dum1lcm8gZGUgbmFzY2lkb3MgYSBjYWRhIGFubyBzZSB0b3JuYXNzZW0gcHJvcG9yY2lvbmFsbWVudGUgbWVub3JlcyBkbyBxdWUgYXMgZ2VyYcOnw7VlcyBhbnRlcmlvcmVzICANCg0KICA0LiBSZWNvbXBvc2nDp8OjbyBFdMOhcmlhIGUgQXVtZW50byBQcm9wb3JjaW9uYWwgZGUgSWRvc29zDQpObyBtb2RlbG8gZGUgcG9wdWxhw6fDo28gZXN0w6F2ZWwgY29uc3RydcOtZG8gcGVsbyBhdXRvciwgYSBlc3RydXR1cmEgcG9wdWxhY2lvbmFsIHNvZnJlIHVtYSBtdWRhbsOnYSBwcm9mdW5kYTogIEpvdmVucyAoMCBhIDE0IGFub3MpOiBBIHBhcnRpY2lwYcOnw6NvIGNhaSBkZSB+NDIlIHBhcmEgfjM1JSBkbyB0b3RhbCBkZSBoYWJpdGFudGVzLiAgSWRvc29zICg2NSBhbm9zIG91IG1haXMpOiBBIHBhcnRpY2lwYcOnw6NvIHNhbHRhIGRlIH4zJSBwYXJhIH45JSBkYSBwb3B1bGHDp8Ojby4gIFJhesOjbyBkZSBEZXBlbmTDqm5jaWE6IEEgdGF4YSBkZSBkZXBlbmTDqm5jaWEgdG90YWwgcmVjdWEgbGlnZWlyYW1lbnRlIGRlIDAsODMgcGFyYSAwLDc5LCBtYXMgYSBmYXRpYSBkZSBpZG9zb3Mgbm8gdG90YWwgZGUgZGVwZW5kZW50ZXMgY3Jlc2NlIGRlIDclIHBhcmEgMjAlDQoNCkFuYWxpc2FuZG8gYSBzdWNlc3PDo28gZGUgZXZlbnRvcyBxdWUgbGV2YW0gYSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EsIMOpIHBvc3PDrXZlbCBpZGVudGlmaWNhciBxdWUgb3MgaW5kaWNhZG9yZXMgZGUgaG9qZSBzw6NvIHVtYSBjb25zZXF1w6puY2lhIGRpcmV0YSBkbyBxdWUgQ2FydmFsaG8gb2JzZXJ2b3UgZW0gc2V1IGFydGlnbyBubyBpbsOtY2lvIGRhIGTDqWNhZGEgZGUgMTk4MCwgbyBwYXNzbyBhIHBhc3NvIHBhcmEgYSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EgY29tIG8gZmF0b3IgZGUgcXVlIG5vIGNhc28gZG8gQnJhc2lsLCBvY29ycmV1IGVtIHVtIGVzcGHDp28gZGUgdGVtcG8gY29uc2lkZXJhZG8gYmVtIGN1cnRvIGUgZGUgZm9ybWEgYWNlbGVyYWRhIHNlIGNvbXBhcmFkYSBjb20gb3MgcGHDrXNlcyBldXJvcGV1cy4gDQoNCiMgKjM6IFByb2R1dGl2aWRhZGUgY29tbyBjYXRhbGlzYWRvcioNCg0KU2FpbmRvIGFnb3JhIGRhIGFuw6FsaXNlIGRlbW9ncsOhZmljYSwgY29tbyB0b2RvcyBvcyBpbmRpY2Fkb3JlcyBhdHVhaXMgbW9zdHJhbSB1bWEgc3VjZXNzw6NvIGRlIGV2ZW50b3MgZGUgYW5vcyBkZSB1bWEgdHJhbnNpw6fDo28gZGVtb2dyw6FmaWNhIGFjZWxlcmFkYSwgYSBwcsOzeGltYSBwYXV0YSBlbSBxdWVzdMOjbyDDqSBhY2VyY2EgZG9zIGltcGFjdG9zIG1haXMgZGlyZXRvcyBuYSBlY29ub21pYSBxdWUgdG9kYSBlc3NhIGRpbsOibWljYSBhY2FycmV0b3UuIA0KDQpPIGltcGFjdG8gbWFpcyBuw610aWRvIGUgZXZpZGVudGUgc2UgZGEgcG9yIGNvbnRhIGRhIFJhesOjbyBkZSBEZXBlbmTDqm5jaWEsIHF1ZSB0YW1iw6ltIHBhc3NhcsOhIHBvciB1bSBwcm9jZXNzbyBkZSBpbnZlcnPDo28gbm9zIHByw7N4aW1vcyBhbm9zIHNlZ3VuZG8gYXMgcHJvamXDp8O1ZXMuIEF0dWFsbWVudGUgYSBwcmV2aXPDo28gw6kgZGUgcXVlIGVtIDIwMzAgYSBSRCBKb3ZlbSBhaW5kYSBzZXLDoSBzdXBlcmlvciBkbyBxdWUgYSBSRCBJZG9zYSwgcmVzcGVjdGl2YW1lbnRlIGNvbSAyNyUgY29udHJhIDE5LjclLCBlbnRyZXRhbnRvIGVtIDIwNDAgw6kgZXNwZXJhZG8gcXVlIGVzc2EgaW52ZXJzw6NvIG9jb3JyYSBjb20gYSBSRCBJZG9zYSBlbSB0b3JubyAzMSw1JSB1bHRyYXBhc3NhbmRvIGEgam92ZW0gbm8gdmFsb3IgZGUgMjQsOCUgKihHcsOhZmljbyA2KSoNCg0KTmEgcHLDoXRpY2EgYSBhbsOhbGlzZSBkZXNzYSByYXrDo28gaW1wbGljYSBxdWUgZW0gdW0gZnV0dXJvIG7Do28gbXVpdG8gZGlzdGFudGUgYSBwb3JjZW50YWdlbSBkb3MgaWRvc29zIG1haXMgZGVwZW5kZW50ZXMgZWNvbm9taWNhbWVudGUgYXVtZW50YXLDoSBlbSByZWxhw6fDo28gYSBlc3NhIG5vdmEgZ2VyYcOnw6NvIGRlIGpvdmVucyBhdGl2b3Mgbm8gbWVyY2FkbyBkZSB0cmFiYWxoby4gSXNzbyBiYXNpY2FtZW50ZSBpbXBsaWNhIHF1ZSBlbSAyMDQwIHRlcmVtb3MgcGFyYSBjYWRhIDEwMCB0cmFiYWxoYWRvcmVzIHBvdGVuY2lhaXMgMzEsNSBpZG9zb3MgZGVwZW5kZW50ZXMuIEVudHJldGFudG8gbyBjZW7DoXJpbyBzZSBtb3N0cmEgYWluZGEgbWFpcyBwcmVvY3VwYW50ZSBjb20gcGFzc2FyIGRvcyBhbm9zLCBjb20gYSBwcm9qZcOnw6NvIGRlIDIwNjAgY2hlZ2FuZG8gw6AgNTEsNSBpZG9zb3MgZGVwZW5kZW50ZXMgcGFyYSBjYWRhIDEwMCB0cmFiYWxoYWRvcmVzIGF0aXZvcy4gKihHcsOhZmljbyA2KSogDQoNCioqKEdyw6FmaWNvIDYpKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogUmF6w6NvIGRlIERlcGVuZMOqbmNpYSDigJQgQnJhc2lsICgxOTgw4oCTMjA2MCkNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBJQkdFIOKAlCBDZW5zb3MgRGVtb2dyw6FmaWNvcyAoMTk4MOKAkzIwMjIpIGUgUHJvamXDp8O1ZXMgUmV2LiAyMDI0DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFByZXZlbsOnw6NvIHBhcmEgY2FtaW5ob3MgdGVtcG9yw6FyaW9zIG5vIFdpbmRvd3MgY29tIGFjZW50dWHDp8Ojbw0KZGlyLmNyZWF0ZSgiQzovUnRlbXAiLCBzaG93V2FybmluZ3MgPSBGQUxTRSkNClN5cy5zZXRlbnYoVE1QRElSID0gIkM6L1J0ZW1wIiwgVE1QID0gIkM6L1J0ZW1wIiwgVEVNUCA9ICJDOi9SdGVtcCIpDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyDilIDilIAgMS4gREVGSU5Jw4fDg08gREEgUEFMRVRBIElOU1RJVFVDSU9OQUwgKEdVSUEgREUgTUFSQ0EpIOKUgOKUgOKUgOKUgOKUgOKUgA0KSUJfQU1BUkVMTyAgICAgIDwtICIjRkZCODFGIiAgIyBBbWFyZWxvIEliTWFjcm8gKFJEIEpvdmVtIC8gRGVzdGFxdWVzKQ0KSUJfQVpVTF9CQVNFICAgIDwtICIjMDIwMjNDIiAgIyBBenVsIEliTWFjcm8gKFJEIFRvdGFsIC8gVMOtdHVsb3MpDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgTWFyY28gZGUgQ3J1emFtZW50byBkYXMgQ3VydmFzDQpJQl9BWlVMX0NMQVJPICAgPC0gIiM2QjhCQTQiICAjIFJEIElkb3NhIChBcG9pbyBncsOhZmljbykNCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSIgICMgVGV4dG9zLCBlaXhvcywgc3VidMOtdHVsb3MgZSBSZWZvcm1hIDIwMTkNCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiIgICMgTGluaGFzIGRlIGdyYWRlLCBlaXhvcyBlIGNyw6lkaXRvcw0KDQojIOKUgOKUgCAyLiBCQVNFIERFIERBRE9TIEUgRVNUUlVUVVJBw4fDg08gVEVNUE9SQUwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpyZCA8LSB0aWJibGUoDQogIGFubyAgICAgICAgPSBjKDE5ODAsIDE5OTEsIDIwMDAsIDIwMTAsIDIwMjIsIDIwMzAsIDIwNDAsIDIwNTAsIDIwNjApLA0KICByZF90b3RhbCAgID0gYyg3OS41LCA2Ny4wLCA1NS4zLCA0NS45LCA0My43LCA0Ni43LCA1Ni4zLCA2Ny42LCA3NS45KSwNCiAgcmRfam92ZW0gICA9IGMoNzIuNiwgNTguMiwgNDUuOSwgMzYuMCwgMzEuMCwgMjcuMCwgMjQuOCwgMjQuNSwgMjQuOCksDQogIHJkX2lkb3NhICAgPSBjKCA2LjksICA4LjgsICA5LjQsICA5LjksIDEyLjcsIDE5LjcsIDMxLjUsIDQzLjEsIDUxLjEpLA0KICBwcm9qZXRhZG8gID0gYyhGQUxTRSwgRkFMU0UsIEZBTFNFLCBGQUxTRSwgRkFMU0UsIFRSVUUsIFRSVUUsIFRSVUUsIFRSVUUpDQopDQoNCnRzIDwtIGZ1bmN0aW9uKGEpIGFzLm51bWVyaWMoYXMuUE9TSVhjdChwYXN0ZTAoYSwgIi0wMS0wMSIpLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQoNCmhpc3QgPC0gcmQgJT4lIGZpbHRlcighcHJvamV0YWRvKQ0KcHJvaiA8LSByZCAlPiUgZmlsdGVyKGFubyA+PSAyMDIyKQ0KDQp0b19oYyA8LSBmdW5jdGlvbihkZiwgY29sKSB7DQogIG1hcDIodHMoZGYkYW5vKSwgZGZbW2NvbF1dLCB+IGxpc3QoeCA9IC54LCB5ID0gLnkpKQ0KfQ0KDQp0c18yMDIyIDwtIHRzKDIwMjIpDQp0c18yMDYwIDwtIHRzKDIwNjApDQp0c18yMDE5IDwtIHRzKDIwMTkpICAjIE1hcmNvIGRhIFJlZm9ybWEgZGEgUHJldmlkw6puY2lhDQp0c18yMDQwIDwtIHRzKDIwNDApICAjIEludmVyc8OjbyBSRCBJZG9zYSA+IFJEIEpvdmVtDQoNCiMg4pSA4pSAIDMuIENPTlNUUlXDh8ODTyBETyBQTE9UIChISUdIQ0hBUlRTIFNUT0NLKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmdyYWZpY29fcmF6YW9fZGVwZW5kZW5jaWEgPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKSwNCiAgICBzcGFjaW5nVG9wID0gMjAsDQogICAgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgc3BhY2luZ0JvdHRvbSA9IDIwLA0KICAgIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCg0KICAjIOKUgOKUgCBSRCBUb3RhbCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhICAgICAgPSB0b19oYyhoaXN0LCAicmRfdG90YWwiKSwNCiAgICB0eXBlICAgICAgPSAibGluZSIsDQogICAgbmFtZSAgICAgID0gIlJEIFRvdGFsIiwNCiAgICBjb2xvciAgICAgPSBJQl9BWlVMX0JBU0UsDQogICAgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgICAgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA1LCBzeW1ib2wgPSAiY2lyY2xlIiksDQogICAgdG9vbHRpcCAgID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgICAgID0gdG9faGMocHJvaiwgInJkX3RvdGFsIiksDQogICAgdHlwZSAgICAgICAgID0gImxpbmUiLA0KICAgIG5hbWUgICAgICAgICA9ICJSRCBUb3RhbCAocHJvamV0YWRhKSIsDQogICAgY29sb3IgICAgICAgID0gSUJfQVpVTF9CQVNFLA0KICAgIGxpbmVXaWR0aCAgICA9IDIsDQogICAgZGFzaFN0eWxlICAgID0gIlNob3J0RGFzaCIsDQogICAgbWFya2VyICAgICAgID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCwgc3ltYm9sID0gImNpcmNsZSIpLA0KICAgIGxpbmtlZFRvICAgICA9ICI6cHJldmlvdXMiLA0KICAgIHNob3dJbkxlZ2VuZCA9IEZBTFNFLA0KICAgIHRvb2x0aXAgICAgICA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KDQogICMg4pSA4pSAIFJEIEpvdmVtIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgICAgICA9IHRvX2hjKGhpc3QsICJyZF9qb3ZlbSIpLA0KICAgIHR5cGUgICAgICA9ICJsaW5lIiwNCiAgICBuYW1lICAgICAgPSAiUkQgSm92ZW0gKDDigJMxNCBhbm9zKSIsDQogICAgY29sb3IgICAgID0gSUJfQU1BUkVMTywNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciAgICA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDUsIHN5bWJvbCA9ICJkaWFtb25kIiksDQogICAgdG9vbHRpcCAgID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgICAgID0gdG9faGMocHJvaiwgInJkX2pvdmVtIiksDQogICAgdHlwZSAgICAgICAgID0gImxpbmUiLA0KICAgIG5hbWUgICAgICAgICA9ICJSRCBKb3ZlbSAocHJvamV0YWRhKSIsDQogICAgY29sb3IgICAgICAgID0gSUJfQU1BUkVMTywNCiAgICBsaW5lV2lkdGggICAgPSAyLA0KICAgIGRhc2hTdHlsZSAgICA9ICJTaG9ydERhc2giLA0KICAgIG1hcmtlciAgICAgICA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQsIHN5bWJvbCA9ICJkaWFtb25kIiksDQogICAgbGlua2VkVG8gICAgID0gIjpwcmV2aW91cyIsDQogICAgc2hvd0luTGVnZW5kID0gRkFMU0UsDQogICAgdG9vbHRpcCAgICAgID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQoNCiAgIyDilIDilIAgUkQgSWRvc2Eg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgID0gdG9faGMoaGlzdCwgInJkX2lkb3NhIiksDQogICAgdHlwZSAgICAgID0gImxpbmUiLA0KICAgIG5hbWUgICAgICA9ICJSRCBJZG9zYSAoNjUrIGFub3MpIiwNCiAgICBjb2xvciAgICAgPSBJQl9BWlVMX0NMQVJPLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyICAgID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNSwgc3ltYm9sID0gInRyaWFuZ2xlIiksDQogICAgdG9vbHRpcCAgID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgICAgID0gdG9faGMocHJvaiwgInJkX2lkb3NhIiksDQogICAgdHlwZSAgICAgICAgID0gImxpbmUiLA0KICAgIG5hbWUgICAgICAgICA9ICJSRCBJZG9zYSAocHJvamV0YWRhKSIsDQogICAgY29sb3IgICAgICAgID0gSUJfQVpVTF9DTEFSTywNCiAgICBsaW5lV2lkdGggICAgPSAyLA0KICAgIGRhc2hTdHlsZSAgICA9ICJTaG9ydERhc2giLA0KICAgIG1hcmtlciAgICAgICA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQsIHN5bWJvbCA9ICJ0cmlhbmdsZSIpLA0KICAgIGxpbmtlZFRvICAgICA9ICI6cHJldmlvdXMiLA0KICAgIHNob3dJbkxlZ2VuZCA9IEZBTFNFLA0KICAgIHRvb2x0aXAgICAgICA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KDQogICMg4pSA4pSAIEVpeG8gWCAoVGVtcG9yYWwgY29tIGZhaXhhcyBlIGxpbmhhcyBkZSBjb3J0ZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3hBeGlzKA0KICAgIHR5cGUgICAgICA9ICJkYXRldGltZSIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzICAgID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKSksDQogICAgcGxvdEJhbmRzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIGZyb20gID0gdHNfMjAyMiwNCiAgICAgICAgdG8gICAgPSB0c18yMDYwLA0KICAgICAgICBjb2xvciA9ICJyZ2JhKDIsIDIsIDYwLCAwLjAzKSIsDQogICAgICAgIGxhYmVsID0gbGlzdCgNCiAgICAgICAgICB0ZXh0ICAgICAgICAgID0gIlByb2plw6fDo28gSUJHRSIsDQogICAgICAgICAgc3R5bGUgICAgICAgICA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEwcHgiLCBmb250U3R5bGUgPSAiaXRhbGljIiksDQogICAgICAgICAgYWxpZ24gICAgICAgICA9ICJjZW50ZXIiLA0KICAgICAgICAgIHZlcnRpY2FsQWxpZ24gPSAidG9wIiwNCiAgICAgICAgICB5ICAgICAgICAgICAgID0gMTUNCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgICMgTGluaGEgMTogQ2Vuc28gMjAyMg0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgICAgID0gdHNfMjAyMiwNCiAgICAgICAgd2lkdGggICAgID0gMS41LA0KICAgICAgICBjb2xvciAgICAgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCAgICA9IDUsDQogICAgICAgIGxhYmVsICAgICA9IGxpc3QoDQogICAgICAgICAgdGV4dCAgPSAiQ2Vuc28gMjAyMiIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMHB4IiksDQogICAgICAgICAgYWxpZ24gPSAicmlnaHQiLA0KICAgICAgICAgIHggICAgID0gLTQsDQogICAgICAgICAgeSAgICAgPSAzMA0KICAgICAgICApDQogICAgICApLA0KICAgICAgIyBMaW5oYSAyOiBSZWZvcm1hIGRhIFByZXZpZMOqbmNpYSAoMjAxOSkNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlICAgICA9IHRzXzIwMTksDQogICAgICAgIHdpZHRoICAgICA9IDEuNSwNCiAgICAgICAgY29sb3IgICAgID0gSUJfQ0lOWkFfRVNDVVJPLA0KICAgICAgICBkYXNoU3R5bGUgPSAiRGFzaCIsDQogICAgICAgIHpJbmRleCAgICA9IDUsDQogICAgICAgIGxhYmVsICAgICA9IGxpc3QoDQogICAgICAgICAgdGV4dCAgPSAiUmVmb3JtYSBkYSBQcmV2aWTDqm5jaWEgKDIwMTkpIiwNCiAgICAgICAgICBzdHlsZSA9IGxpc3QoDQogICAgICAgICAgICBjb2xvciAgICAgID0gSUJfQ0lOWkFfRVNDVVJPLA0KICAgICAgICAgICAgZm9udFNpemUgICA9ICIxMHB4IiwNCiAgICAgICAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICAgICAgICApLA0KICAgICAgICAgIGFsaWduICAgICAgICAgPSAibGVmdCIsDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJ0b3AiLA0KICAgICAgICAgIHggICAgICAgICAgICAgPSA0LA0KICAgICAgICAgIHkgICAgICAgICAgICAgPSAxNQ0KICAgICAgICApDQogICAgICApLA0KICAgICAgIyBMaW5oYSAzOiBJbnZlcnPDo28gUkQgSWRvc2EgPiBSRCBKb3ZlbSAofjIwNDApDQogICAgICBsaXN0KA0KICAgICAgICB2YWx1ZSAgICAgPSB0c18yMDQwLA0KICAgICAgICB3aWR0aCAgICAgPSAxLjUsDQogICAgICAgIGNvbG9yICAgICA9IElCX0FaVUxfTUVESU8sDQogICAgICAgIGRhc2hTdHlsZSA9ICJEb3QiLA0KICAgICAgICB6SW5kZXggICAgPSA1LA0KICAgICAgICBsYWJlbCAgICAgPSBsaXN0KA0KICAgICAgICAgIHRleHQgID0gIlJEIElkb3NhIHN1cGVyYSBSRCBKb3ZlbSAofjIwNDApIiwNCiAgICAgICAgICBzdHlsZSA9IGxpc3QoDQogICAgICAgICAgICBjb2xvciAgICAgID0gSUJfQVpVTF9NRURJTywNCiAgICAgICAgICAgIGZvbnRTaXplICAgPSAiMTBweCIsDQogICAgICAgICAgICBmb250V2VpZ2h0ID0gImJvbGQiDQogICAgICAgICAgKSwNCiAgICAgICAgICBhbGlnbiAgICAgICAgID0gImxlZnQiLA0KICAgICAgICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICAgICAgICB4ICAgICAgICAgICAgID0gNCwNCiAgICAgICAgICB5ICAgICAgICAgICAgID0gLTgNCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCg0KICAjIOKUgOKUgCBFaXhvIFkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHRleHQgID0gIlJhesOjbyBkZSBEZXBlbmTDqm5jaWEgKCUpIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIsIGZvbnRXZWlnaHQgPSAibm9ybWFsIikNCiAgICApLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiLA0KICAgICAgc3R5bGUgID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKSwNCiAgICBtaW4gICAgICAgICAgID0gMCwNCiAgICBtYXggICAgICAgICAgID0gOTAsDQogICAgdGlja0ludGVydmFsICA9IDEwLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgcGxvdExpbmVzICAgICA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICB2YWx1ZSAgICAgPSByZCRyZF90b3RhbFtyZCRhbm8gPT0gMjAyMl0sDQogICAgICAgIHdpZHRoICAgICA9IDEsDQogICAgICAgIGNvbG9yICAgICA9ICJyZ2JhKDIsIDIsIDYwLCAwLjI1KSIsDQogICAgICAgIGRhc2hTdHlsZSA9ICJEb3QiLA0KICAgICAgICB6SW5kZXggICAgPSAzDQogICAgICApDQogICAgKQ0KICApICU+JQ0KDQogICMg4pSA4pSAIFRvb2x0aXAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkICAgICAgICAgID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzICAgICAgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9IElCX0JSQU5DTywNCiAgICBib3JkZXJDb2xvciAgICAgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBib3JkZXJSYWRpdXMgICAgPSA2LA0KICAgIHNoYWRvdyAgICAgICAgICA9IEZBTFNFLA0KICAgIHN0eWxlICAgICAgICAgICA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIsIGNvbG9yID0gSUJfQVpVTF9CQVNFKSwNCiAgICBoZWFkZXJGb3JtYXQgICAgPSAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMnB4Jz48Yj57cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4iLA0KICAgIHBvaW50Rm9ybWF0ICAgICA9IHBhc3RlMCgNCiAgICAgICI8c3BhbiBzdHlsZT0nY29sb3I6e3Nlcmllcy5jb2xvcn0nPuKXjzwvc3Bhbj4gIiwNCiAgICAgICJ7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueTouMWZ9JTwvYj48YnIvPiINCiAgICApDQogICkgJT4lDQoNCiAgIyDilIDilIAgVMOtdHVsb3MgZSBMZWdlbmRhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfdGl0bGUoDQogICAgdGV4dCAgPSAiUmF6w6NvIGRlIERlcGVuZMOqbmNpYSDigJQgQnJhc2lsICgxOTgw4oCTMjA2MCkiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxOHB4IiwgZm9udFdlaWdodCA9ICJib2xkIiwgY29sb3IgPSBJQl9BWlVMX0JBU0UpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgID0gIkRlcGVuZGVudGVzIHBvciAxMDAgcGVzc29hcyBlbSBpZGFkZSBhdGl2YSAoMTXigJM2NCBhbm9zKSB8IExpbmhhIHRyYWNlamFkYTogcHJvamXDp8OjbyBJQkdFIFJldi4gMjAyNCIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiLCBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTykNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgICAgICAgPSBUUlVFLA0KICAgIGFsaWduICAgICAgICAgPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ICAgICAgICA9ICJob3Jpem9udGFsIiwNCiAgICBpdGVtU3R5bGUgICAgID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IiwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBjb2xvciA9IElCX0FaVUxfQkFTRSkNCiAgKSAlPiUNCg0KICAjIERlc2F0aXZhw6fDo28gZGUgY29udHJvbGVzIGRlIG5hdmVnYcOnw6NvIGZpbmFuY2VpcmENCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCAgICAgPSBGQUxTRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkICAgICA9IEZBTFNFKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgICAgID0gVFJVRSkgJT4lDQoNCiAgIyBDcsOpZGl0b3MNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ICAgID0gIkZvbnRlOiBJQkdFIOKAlCBDZW5zb3MgRGVtb2dyw6FmaWNvcyAoMTk4MOKAkzIwMjIpIGUgUHJvamXDp8O1ZXMgZGEgUG9wdWxhw6fDo28gUmV2LiAyMDI0LiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlICAgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9IElCX0NJTlpBX0NMQVJPKQ0KICApDQoNCmdyYWZpY29fcmF6YW9fZGVwZW5kZW5jaWENCmBgYA0KDQpFbSB1bSBjZW7DoXJpbyBuYSBxdWFsIGrDoSBleGlzdGUgdW0gZ3JhbmRlIHByb2JsZW1hIGRlIGRlcGVuZMOqbmNpYSBubyBsb25nbyBwcmF6bywgYSBiYWl4YSBwcm9kdXRpdmlkYWRlIGrDoSBzZSBtb3N0cmEgbm9zIGRpYXMgZGUgaG9qZSBjb20gdW0gcG90ZW5jaWFsaXphZG9yIGRvIHByb2JsZW1hIGVtIHF1ZXN0w6NvLiBDb25kdXppbmRvIGVzc2UgcmFjaW9jw61uaW8gw6kgbmVjZXNzw6FyaW8gYW5hbGlzYXIgYSBQVEYgKFByb2R1dGl2aWRhZGUgVG90YWwgZG9zIEZhdG9yZXMpLCB1bSDDrW5kaWNlIGNhbGN1bGFkbyBwcmluY2lwYWxtZW50ZSBwZWxhIEZHViBubyBCcmFzaWwgcXVlIGFuYWxpc2EgbyBjcmVzY2ltZW50byBkYSBwcm9kdcOnw6NvIHF1ZSBuw6NvIMOpIGV4cGxpY2FkbyBwZWxvIGF1bWVudG8gbmEgcXVhbnRpZGFkZSBkZSByZWN1cnNvcyBhcGxpY2Fkb3MsIG91IHNlamEsIGNhcHR1cmEgYSBlZmljacOqbmNpYSByZWFsIGRlIHRvZG9zIG9zIGZhdG9yZXMuDQoNCk8gaGlzdMOzcmljbyByZWNlbnRlIGluZGljYSBxdWUgYXBlc2FyIGRlIHVtIGF1bWVudG8gZW0gMjAyMCwgYW1iYXMgYXMgUFRGcyBhcHJlc2VudGFyYW0gdW1hIHJlZHXDp8OjbyBjb25zaWRlcsOhdmVsIGF0w6kgMjAyMixlIHBvc3Rlcmlvcm1lbnRlIHVtIHBlcXVlbm8gYXVtZW50byBjb20gYSBQVEYgYnJ1dGEgZXN0YW5kbyBhdHVhbG1lbnRlIGVtIDEwMS41IGUgYSBkZSBhanVzdGUgZGUgQ2FwaXRhbCBIdW1hbm8gY29tIDg0LjQsIHJlcHJlc2VudGFuZG8gcXVlIGF0w6kgZXNzZSDDumx0aW1vIGF1bWVudG8gYSBtZWxob3JpYSBlZHVjYWNpb25hbCBmb2kgYSByZXNwb25zw6F2ZWwgcG9yIG1lbGhvcmFyIGEgcHJvZHV0aXZpZGFkZSwgYSBQVEYgQnJ1dGEuIEFvIGRlc2NvbnRhciBlc3NlIGVmZWl0bywgdG9ybmEtc2UgZXZpZGVudGUgcXVlIGEgZWZpY2nDqm5jaWEgcmVhbCBkb3MgcHJvY2Vzc29zIHByb2R1dGl2b3MgZSBhZG/Dp8OjbyBkZSBub3ZhcyB0ZWNub2xvZ2lhcyBlc3TDo28gZW0gZGVjbMOtbmlvLiAqKEdyw6FmaWNvIDcpKg0KDQpTb21hbmRvIGEgcHJvYmxlbcOhdGljYSBkYSBwcm9kdXRpdmlkYWRlIGNvbSBvIGF1bWVudG8gZGEgZGVwZW5kw6puY2lhIG5vIGxvbmdvIHByYXpvLCBlbnhlcmdhLXNlIHVtIGNlbsOhcmlvIHByZW9jdXBhbnRlIGNvbSBvcyBub3ZvcyB0cmFiYWxoYWRvcmVzIGRhIFBFQSAoUG9wdWxhw6fDo28gRWNvbm9taWNhbWVudGUgQXRpdmEpIHNlbmRvIG9zIHJlc3BvbnPDoXZlaXMgcG9yIHN1c3RlbnRhciBlc3NhIGdyYW5kZSBub3ZhIHBhcmNlbGEgZGUgaWRvc29zLCBqw6Egb3BlcmFuZG8gZW0gdW0gcml0bW8gZGUgZWZpY2nDqm5jaWEgZW0gcXVlZGEuDQoNCioqKEdyw6FmaWNvIDcpKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogUHJvZHV0aXZpZGFkZSBUb3RhbCBkb3MgRmF0b3JlcyDigJQgQnJhc2lsICgxOTk14oCTMjAyNCkNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBGR1YvSUJSRSDigJQgT2JzZXJ2YXTDs3JpbyBkYSBQcm9kdXRpdmlkYWRlIFJlZ2lzIEJvbmVsbGkNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQoNCiMg4pSA4pSAIDEuIERFRklOScOHw4NPIERBIFBBTEVUQSBJTlNUSVRVQ0lPTkFMIChHVUlBIERFIE1BUkNBKSDilIDilIDilIDilIDilIDilIANCklCX0FNQVJFTE8gICAgICA8LSAiI0ZGQjgxRiIgICMgUFRGIGNvbSBjYXBpdGFsIGh1bWFubyAoRGVzdGFxdWUpDQpJQl9BWlVMX0JBU0UgICAgPC0gIiMwMjAyM0MiICAjIFBURiBzZW0gY2FwaXRhbCBodW1hbm8gLyBUw610dWxvcw0KSUJfQlJBTkNPICAgICAgIDwtICIjRkZGRkZGIiAgIyBGdW5kbyBpbnN0aXR1Y2lvbmFsDQpJQl9BWlVMX01FRElPICAgPC0gIiMwMDJDNUUiICAjIEVsZW1lbnRvcyBkZSBhcG9pbyBpbnN0aXR1Y2lvbmFsDQpJQl9BWlVMX0NMQVJPICAgPC0gIiM2QjhCQTQiICAjIEFwb2lvIGdyw6FmaWNvIGNvbXBsZW1lbnRhcg0KSUJfQ0lOWkFfRVNDVVJPIDwtICIjM0EzQTNBIiAgIyBUZXh0b3MsIGVpeG9zIGUgc3VidMOtdHVsb3MNCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiIgICMgTGluaGFzIGRlIGdyYWRlLCBlaXhvcyBlIGNyw6lkaXRvcw0KDQojIOKUgOKUgCAyLiBMRUlUVVJBIEUgVFJBVEFNRU5UTyBET1MgREFET1MgKEZHVi9JQlJFKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmFycXVpdm9fcHRmIDwtICJDOi9Vc2Vycy9Kb8OjbyBQZWRyby9Eb3dubG9hZHMvaW5kaWNhZG9yX2FudWFsX2RlX3Byb2R1dGl2aWRhZGVfdG90YWxfZG9zX2ZhdG9yZXNfbl8xLnhsc3giDQoNCnB0Zl9jb21fcmF3IDwtIHJlYWRfZXhjZWwoYXJxdWl2b19wdGYsIHNoZWV0ID0gIlBURiBjb20gY2FwaXRhbCBodW1hbm8iLCBza2lwID0gNykgJT4lDQogIHNldF9uYW1lcyhjKCJhbm8iLCAidmFsb3IiKSkgJT4lDQogIGZpbHRlcighaXMubmEoYW5vKSwgIWlzLm5hKHZhbG9yKSkgJT4lDQogIG11dGF0ZShhbm8gPSBhcy5pbnRlZ2VyKGFubyksIHZhbG9yID0gYXMubnVtZXJpYyh2YWxvcikpDQoNCnB0Zl9zZW1fcmF3IDwtIHJlYWRfZXhjZWwoYXJxdWl2b19wdGYsIHNoZWV0ID0gIlBURiBzZW0gY2FwaXRhbCBodW1hbm8iLCBza2lwID0gNykgJT4lDQogIHNldF9uYW1lcyhjKCJhbm8iLCAidmFsb3IiKSkgJT4lDQogIGZpbHRlcighaXMubmEoYW5vKSwgIWlzLm5hKHZhbG9yKSkgJT4lDQogIG11dGF0ZShhbm8gPSBhcy5pbnRlZ2VyKGFubyksIHZhbG9yID0gYXMubnVtZXJpYyh2YWxvcikpDQoNCiMgUmViYXNlOiAyMDA4ID0gMTAwDQpiYXNlX2NvbSA8LSBwdGZfY29tX3JhdyR2YWxvcltwdGZfY29tX3JhdyRhbm8gPT0gMjAwOF0NCmJhc2Vfc2VtIDwtIHB0Zl9zZW1fcmF3JHZhbG9yW3B0Zl9zZW1fcmF3JGFubyA9PSAyMDA4XQ0KDQpwdGZfYXR1YWxpemFkYSA8LSBwdGZfc2VtX3JhdyAlPiUNCiAgcmVuYW1lKHNlbV9jaCA9IHZhbG9yKSAlPiUNCiAgbGVmdF9qb2luKHB0Zl9jb21fcmF3ICU+JSByZW5hbWUoY29tX2NoID0gdmFsb3IpLCBieSA9ICJhbm8iKSAlPiUNCiAgZmlsdGVyKGFubyA+PSAxOTk1KSAlPiUNCiAgbXV0YXRlKA0KICAgIGNvbV9jaF9pZHggPSByb3VuZChjb21fY2ggLyBiYXNlX2NvbSAqIDEwMCwgMiksDQogICAgc2VtX2NoX2lkeCA9IHJvdW5kKHNlbV9jaCAvIGJhc2Vfc2VtICogMTAwLCAyKSwNCiAgICBkYXRhICAgICAgID0gYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLTAxLTAxIikpLA0KICAgIGRhdGFfbXMgICAgPSBhcy5udW1lcmljKGFzLlBPU0lYY3QoZGF0YSwgdHogPSAiVVRDIikpICogMTAwMA0KICApDQoNCmRhZG9zX3NlbSA8LSBwdGZfYXR1YWxpemFkYSAlPiUgc2VsZWN0KHRpbWVzdGFtcCA9IGRhdGFfbXMsIHZhbG9yID0gc2VtX2NoX2lkeCkNCmRhZG9zX2NvbSA8LSBwdGZfYXR1YWxpemFkYSAlPiUgc2VsZWN0KHRpbWVzdGFtcCA9IGRhdGFfbXMsIHZhbG9yID0gY29tX2NoX2lkeCkNCg0KdHNfMjAwOCA8LSBhcy5udW1lcmljKGFzLlBPU0lYY3QoIjIwMDgtMDEtMDEiLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQp0c18yMDE0IDwtIGFzLm51bWVyaWMoYXMuUE9TSVhjdCgiMjAxNC0wMS0wMSIsIHR6ID0gIlVUQyIpKSAqIDEwMDANCg0KIyDilIDilIAgMy4gQ09OU1RSVcOHw4NPIERPIFBMT1QgKEhJR0hDSEFSVFMgU1RPQ0spIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZ3JhZmljb19wdGYgPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKSwNCiAgICBzcGFjaW5nVG9wID0gMjAsDQogICAgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgc3BhY2luZ0JvdHRvbSA9IDIwLA0KICAgIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCg0KICAjIFPDqXJpZSAxOiBTZW0gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIChBenVsIEliTWFjcm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgID0gbGlzdF9wYXJzZTIoZGFkb3Nfc2VtKSwNCiAgICB0eXBlICAgICAgPSAibGluZSIsDQogICAgbmFtZSAgICAgID0gIlBURiBzZW0gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIiwNCiAgICBjb2xvciAgICAgPSBJQl9BWlVMX0JBU0UsDQogICAgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgICAgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0LCBzeW1ib2wgPSAiY2lyY2xlIiksDQogICAgdG9vbHRpcCAgID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSkNCiAgKSAlPiUNCg0KICAjIFPDqXJpZSAyOiBDb20gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIChBbWFyZWxvIEliTWFjcm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSAgICAgID0gbGlzdF9wYXJzZTIoZGFkb3NfY29tKSwNCiAgICB0eXBlICAgICAgPSAibGluZSIsDQogICAgbmFtZSAgICAgID0gIlBURiBjb20gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIiwNCiAgICBjb2xvciAgICAgPSBJQl9BTUFSRUxPLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyICAgID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCwgc3ltYm9sID0gImRpYW1vbmQiKSwNCiAgICB0b29sdGlwICAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAxKQ0KICApICU+JQ0KDQogICMg4pSA4pSAIEVpeG8gWCAoVGVtcG9yYWwgY29tIGZhaXhhcyBkZSBkZXN0YXF1ZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3hBeGlzKA0KICAgIHR5cGUgICAgICA9ICJkYXRldGltZSIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzICAgID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKSksDQogICAgcGxvdEJhbmRzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIGZyb20gID0gdHNfMjAwOCwNCiAgICAgICAgdG8gICAgPSB0c18yMDE0LA0KICAgICAgICBjb2xvciA9ICJyZ2JhKDIsIDIsIDYwLCAwLjAzKSIsDQogICAgICAgIGxhYmVsID0gbGlzdCgNCiAgICAgICAgICB0ZXh0ICAgICAgICAgID0gIkNpY2xvIGRlIEV4cGFuc8OjbyAoMjAwOOKAkzIwMTQpIiwNCiAgICAgICAgICBzdHlsZSAgICAgICAgID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIsIGZvbnRTdHlsZSA9ICJpdGFsaWMiKSwNCiAgICAgICAgICBhbGlnbiAgICAgICAgID0gImNlbnRlciIsDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJ0b3AiLA0KICAgICAgICAgIHkgICAgICAgICAgICAgPSAxNQ0KICAgICAgICApDQogICAgICApDQogICAgKQ0KICApICU+JQ0KDQogICMg4pSA4pSAIEVpeG8gWSBjb20gbGluaGEtYmFzZSAyMDA4ID0gMTAwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ICA9ICLDjW5kaWNlICgyMDA4ID0gMTAwKSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiLCBmb250V2VpZ2h0ID0gIm5vcm1hbCIpDQogICAgKSwNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZTouMGZ9IiwNCiAgICAgIHN0eWxlICA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICBwbG90TGluZXMgICAgID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlICAgICA9IDEwMCwNCiAgICAgICAgd2lkdGggICAgID0gMS41LA0KICAgICAgICBjb2xvciAgICAgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCAgICA9IDUsDQogICAgICAgIGxhYmVsICAgICA9IGxpc3QoDQogICAgICAgICAgdGV4dCAgPSAiQW5vLUJhc2UgMjAwOCA9IDEwMCIsDQogICAgICAgICAgYWxpZ24gPSAicmlnaHQiLA0KICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIpLA0KICAgICAgICAgIHggICAgID0gLTEwLA0KICAgICAgICAgIHkgICAgID0gLTUNCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCg0KICAjIOKUgOKUgCBUb29sdGlwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCAgICAgICAgICA9IFRSVUUsDQogICAgY3Jvc3NoYWlycyAgICAgID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgYm9yZGVyQ29sb3IgICAgID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgYm9yZGVyUmFkaXVzICAgID0gNiwNCiAgICBzaGFkb3cgICAgICAgICAgPSBGQUxTRSwNCiAgICBzdHlsZSAgICAgICAgICAgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiLCBjb2xvciA9IElCX0FaVUxfQkFTRSksDQogICAgaGVhZGVyRm9ybWF0ICAgID0gIjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTJweCc+PGI+QW5vIHtwb2ludC5rZXl9PC9iPjwvc3Bhbj48YnIvPiIsDQogICAgcG9pbnRGb3JtYXQgICAgID0gIjxzcGFuIHN0eWxlPSdjb2xvcjp7c2VyaWVzLmNvbG9yfSc+4pePPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueTouMWZ9PC9iPjxici8+Ig0KICApICU+JQ0KDQogICMg4pSA4pSAIFTDrXR1bG9zIGUgTGVnZW5kYXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3RpdGxlKA0KICAgIHRleHQgID0gIlByb2R1dGl2aWRhZGUgVG90YWwgZG9zIEZhdG9yZXMgKFBURikg4oCUIEJyYXNpbCAoMTk5NeKAkzIwMjQpIiwNCiAgICBhbGlnbiA9ICJsZWZ0IiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMThweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gSUJfQVpVTF9CQVNFKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ICA9ICLDjW5kaWNlIGVuY2FkZWFkbyBjb20gZSBzZW0gYWp1c3RlIHBvciBlc2NvbGFyaWRhZGUgZSBjYXBpdGFsIGh1bWFubyAoUmViYXNlOiAyMDA4ID0gMTAwKSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiLCBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTykNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgICAgICAgPSBUUlVFLA0KICAgIGFsaWduICAgICAgICAgPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ICAgICAgICA9ICJob3Jpem9udGFsIiwNCiAgICBpdGVtU3R5bGUgICAgID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IiwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBjb2xvciA9IElCX0FaVUxfQkFTRSkNCiAgKSAlPiUNCg0KICAjIERlc2F0aXZhw6fDo28gZGUgY29udHJvbGVzIGV4dHJhcyBkZSBuYXZlZ2HDp8OjbyBmaW5hbmNlaXJhDQogIGhjX3JhbmdlU2VsZWN0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgICAgID0gRkFMU0UpICU+JQ0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCAgICAgPSBGQUxTRSkgJT4lDQogIGhjX2V4cG9ydGluZyhlbmFibGVkICAgICA9IFRSVUUpICU+JQ0KDQogICMgQ3LDqWRpdG9zDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCAgICA9ICJGb250ZTogRkdWL0lCUkUg4oCUIE9ic2VydmF0w7NyaW8gZGEgUHJvZHV0aXZpZGFkZSBSZWdpcyBCb25lbGxpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlICAgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9IElCX0NJTlpBX0NMQVJPKQ0KICApDQoNCmdyYWZpY29fcHRmDQpgYGANCg0KIyAqNDogRMOpZmljaXQgUHJldmlkZW5jacOhcmlvIGUgbyBpbXBhY3RvIG5vIFBJQioNCg0KQ29tbyBjb25zZXF1w6puY2lhIGRlIHRvZGEgZXNzYSBzZXF1w6puY2lhLCBvIHByb2JsZW1hIHNlIGNvbmNyZXRpemEgbmEgYW7DoWxpc2UgZGEgcGFydGUgZmlzY2FsIGRvIHBhw61zLCBwb2lzIG9zIGdhc3RvcyBjb20gYSBwcmV2aWTDqm5jaWEgY29udGludWFyYW0gc3ViaW5kbyBhY2ltYSBkYSBpbmZsYcOnw6NvIG1lc21vIGFww7NzIGEgUmVmb3JtYSBkYSBQcmV2aWTDqm5jaWEgZGUgMjAxOS4gRGUgYWNvcmRvIGNvbSBvIElGSSAoSW5zdGl0dWnDp8OjbyBGaXNjYWwgSW5kZXBlbmRlbnRlIGRvIFNlbmFkbyksIGRlc2RlIGEgcmVmb3JtYSBhdMOpIGhvamUsIGFwZW5hcyBlbSAyMDIxIHF1ZSBvY29ycmV1IHVtYSBxdWVkYSAxLDMlIG5hIHZhcmlhw6fDo28gcmVhbCBkb3MgZ2FzdG9zIGNvbSBQcmV2aWTDqm5jaWEsIGNvbSBvcyB0b2RvcyBvcyBkZW1haXMgYW5vcyBhcHJlc2VudGFuZG8gdW0gYXVtZW50byBjb20gZGVzdGFxdWUgcGFyYSAyMDIzIGVtIHF1ZSBvIGF1bWVudG8gcmVhbCBjaGVnb3UgYSBxdWFzZSA4JSwgY29tIGEgcXVhbnRpZGFkZSBkZSBiZW5lZsOtY2lvcyBzdWJpbmRvIGVtIDIsNiUgZSBvIGF1bWVudG8gcmVhbCBkYSBkZXNwZXNhIGNvbSBwYWdhbWVudG8gZGUgYmVuZWbDrWNpb3MgZW0gNCw3OSUuIA0KDQpBIHBlc3F1aXNhIGRvIElGSSB0YW1iw6ltIGNhbGN1bG91IGUgcHJvamV0b3Ugb3MgZ2FzdG9zIGNvbSBhIFByZXZpZMOqbmNpYSBwYXJhIG9zIHByw7N4aW1vcyAxMCBhbm9zLCBlc3RpbWFuZG8gdW0gY3Jlc2NpbWVudG8gcmVhbCBhbm8gYXDDs3MgYW5vLiBObyBhbm8gcGFzc2FkbyAoMjAyNSksIG8gdG90YWwgZG9zIGdhc3RvcyBwcmV2aWRlbmNpw6FyaW9zIGrDoSBoYXZpYSBwYXNzYWRvIHRyaWxow6NvIGFsY2Fuw6dhbmRvIHVtIHBhdGFtYXIgZGUgUiQgMSwwMzcgdHJpbGjDo28gZGUgcmVhaXMsIGUgZW0gMjAzNSBvIMO6bHRpbW8gYW5vIHByb2pldGFkbyDDqSBlc3BlcmFkbyBxdWUgbyB0b3RhbCBnYXN0byBjb20gYSBQcmV2aWTDqm5jaWEgU29jaWFsIHNlcsOhIGVtIHRvcm5vIFIkIDEsNTg3IHRyaWxow6NvLCBwYXNzYW5kbyBhIG1hcmNhIGRlIHVtIHRyaWxow6NvIGUgbWVpby4gKihHcsOhZmljbyA4KSoNCg0KRGUgYWNvcmRvIGNvbSBvIMO6bHRpbW8gQkVQUyAoQm9sZXRpbSBkYSBQcmV2aWTDqm5jaWEgU29jaWFsKSwgbyByZXN1bHRhZG8gcHJpbcOhcmlvIGFjdW11bGFkbyBlbSAxMiBtZXNlcyBkbyBSR1BTIChSZWdpbWUgR2VyYWwgZGEgUHJldmlkw6puY2lhIFNvY2lhbCkgw6kgZGUgLVIkIDM0OSw3IGJpbGjDtWVzIChCRVBTL2p1biAyMDI2KSwgZSBvcyBkYWRvcyBhIHJlc3BlaXRvIGRvIMO6bHRpbW8gbcOqcyBjYWxjdWxhZG8gKE5vdmVtYnJvIGRlIDIwMjUpLCBmb2kgcmVnaXN0cmFkbyB1bSBkw6lmaWNpdCBtZW5zYWwgUiQgMjEsMyBiaWxow7VlcywgbW9zdHJhbmRvIHNpbmFpcyBjbGFyb3MgZGUgdW0gZMOpZmljaXQgZXN0cnV0dXJhbCBxdWUgdGVuZGUgYSBzZSB0b3JuYXIgY2FkYSB2ZXogcGlvci4gDQoNCioqKEdyw6FmaWNvIDgpKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogRGVzcGVzYXMgY29tIG8gUkdQUyDigJQgUHJvamXDp8OjbyBJRkkgKDIwMjTigJMyMDM1KQ0KIyBJZGVudGlkYWRlIFZpc3VhbCBPZmljaWFsOiBQYWRyw6NvIEliTWFjcm8gQkggKE1hbnVhbCBkZSBNYXJjYSkNCiMgRm9udGU6IEluc3RpdHVpw6fDo28gRmlzY2FsIEluZGVwZW5kZW50ZSAoSUZJKSDigJQgUkFGIEp1bmhvLzIwMjUNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIEFtYXJlbG8gSWJNYWNybyAoRGVzdGFxdWVzIGUgZWxlbWVudG9zIGRlIMOqbmZhc2UpDQpJQl9BWlVMX0JBU0UgICAgPC0gIiMwMjAyM0MiICAjIEF6dWwgSWJNYWNybyAoVMOtdHVsb3MgZSBiYXNlIGluc3RpdHVjaW9uYWwpDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgU8OpcmllIGRlIGRhZG9zIGVtIGNvbHVuYQ0KSUJfQVpVTF9DTEFSTyAgIDwtICIjNkI4QkE0IiAgIyBBcG9pbyBncsOhZmljbyBjb21wbGVtZW50YXINCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSIgICMgVGV4dG9zLCBlaXhvcyBlIHN1YnTDrXR1bG9zDQpJQl9DSU5aQV9DTEFSTyAgPC0gIiNBNkE2QTYiICAjIExpbmhhcyBkZSBncmFkZSwgZWl4b3MgZSBjcsOpZGl0b3MNCg0KIyDilIDilIAgMi4gQkFTRSBERSBEQURPUyAoUFJPSkXDh8ODTyBJRkkgLSBHQVNUT1MgUkVBSVMgUkdQUykg4pSA4pSA4pSA4pSA4pSA4pSADQpkZl9yZ3BzX2lmaSA8LSB0aWJibGUoDQogIGFubyA9IGFzLmNoYXJhY3RlcigyMDI0OjIwMzUpLA0KICBkZXNwZXNhID0gYygNCiAgICA5ODguMSwgMTAzNy4xLCAxMDkxLjksIDExOTAuNiwgMTIzNi45LCAxMjg5LjMsDQogICAgMTMzNi4zLCAxMzg0LjEsIDE0MzMuNCwgMTQ4My43LCAxNTM1LjEsIDE1ODcuNQ0KICApDQopDQoNCiMg4pSA4pSAIDMuIFJFTkRFUklaQcOHw4NPIERPIEdSw4FGSUNPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZ3JhZmljb19kZXNwZXNhc19yZ3BzIDwtIGhpZ2hjaGFydCgpICU+JQ0KICBoY19jaGFydCgNCiAgICB0eXBlID0gImNvbHVtbiIsDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBjb2x1bW4gPSBsaXN0KA0KICAgICAgYm9yZGVyV2lkdGggPSAwLA0KICAgICAgcG9pbnRQYWRkaW5nID0gMC4wNSwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMTIsDQogICAgICBkYXRhTGFiZWxzID0gbGlzdCgNCiAgICAgICAgZW5hYmxlZCA9IFRSVUUsDQogICAgICAgIGZvcm1hdCA9ICJ7cG9pbnQueTosLjFmfSIsDQogICAgICAgIHN0eWxlID0gbGlzdCgNCiAgICAgICAgICBjb2xvciA9IElCX0FaVUxfQkFTRSwNCiAgICAgICAgICBmb250U2l6ZSA9ICIxMXB4IiwNCiAgICAgICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgICAgIHRleHRPdXRsaW5lID0gIm5vbmUiDQogICAgICAgICksDQogICAgICAgIHkgPSAtNQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkRlc3Blc2FzIFJHUFMiLA0KICAgIGRhdGEgPSBkZl9yZ3BzX2lmaSRkZXNwZXNhLA0KICAgIGNvbG9yID0gSUJfQVpVTF9NRURJTw0KICApICU+JQ0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gZGZfcmdwc19pZmkkYW5vLA0KICAgIGdyaWRMaW5lV2lkdGggPSAwLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIHRpY2tDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikpDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHRleHQgPSAiUiQgYmlsaMO1ZXMgZGUgMjAyNSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgbWluID0gMCwNCiAgICBtYXggPSAxODAwLA0KICAgIHRpY2tJbnRlcnZhbCA9IDIwMCwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlOiwuMGZ9IiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkRlc3Blc2FzIGNvbSBvIFJHUFMg4oCUIFJBRiBkZSBqdW5obyBkZSAyMDI1IChSJCBiaWxow7VlcyBkZSAyMDI1KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJDcmVzY2ltZW50byBwcm9qZXRhZG8gZGUgZ2FzdG9zIHJlYWlzIGNvbSBhIFByZXZpZMOqbmNpYSBTb2NpYWwgYXTDqSAyMDM1ICh2YWxvcmVzIGEgcHJlw6dvcyBkZSAyMDI1KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGhlYWRlckZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEycHgnPjxiPkFubyB7cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4iLA0KICAgIHBvaW50Rm9ybWF0ID0gIjxzcGFuIHN0eWxlPSdjb2xvcjp7c2VyaWVzLmNvbG9yfSc+4pePPC9zcGFuPiBEZXNwZXNhIFJlYWw6IDxiPlIkIHtwb2ludC55OiwuMWZ9IGJpPC9iPjxici8+Ig0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJbnN0aXR1acOnw6NvIEZpc2NhbCBJbmRlcGVuZGVudGUgKElGSSkg4oCUIFJlbGF0w7NyaW8gZGUgQWNvbXBhbmhhbWVudG8gRmlzY2FsIChSQUYpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQpncmFmaWNvX2Rlc3Blc2FzX3JncHMNCmBgYA0KDQpPIGltcGFjdG8gZGVzc2EgY2FkZWlhIGRlIGV2ZW50b3MgasOhIGVzdMOhIGltcGFjdGFuZG8gbyBmaXNjbyBkbyBwYcOtcywgZW0gdW1hIHNpdHVhw6fDo28gbmEgcXVhbCBqw6Egw6kgYSBkYXMgbWVsaG9yZXMuIENvbSBpc3NvLCB0b2RhIGVzc2EgcXVlc3TDo28gYWluZGEgZ2VyYSB1bSBpbXBhY3RvIG5vIFBJQiwgYW8gYW5hbGlzYXIgYSBwb3JjZW50YWdlbSBkZSBwYXJ0aWNpcGHDp8OjbyBkYSBhcnJlY2FkYcOnw6NvIHZzIGJlbmVmw61jaW9zIGRlIGFtYmFzIGRlbnRybyBkbyBtZXNtby4gRW0gMjAyNCwgYSBhcnJlY2FkYcOnw6NvIGZvaSByZXNwb3PDoXZlbCA1LDQ2JSBlbnF1YW50byBvcyBiZW5lZsOtY2lvcyBhbGNhbsOnYXJhbSA3LDk5JSBkZSBwYXJ0aWNpcGHDp8OjbywgcmVwcmVzZW50YW5kbyB1bSBnYXAgZXN0cnV0dXJhbCBkZSAyLDUzIHBvbnRvcyBwZXJjZW50dWFpcyBldmlkZW5jaWFuZG8gY2xhcmFtZW50ZSB1bSBkZXNlcXVpbMOtYnJpbyBxdWUgZ2VyYSB1bSBkw6lmaWNpdCBwcmV2aWRlbmNpw6FyaW8uICooR3LDoWZpY28gOSkqDQoNCk91dHJvIGRhZG8gcmVsZXZhbnRlIHF1ZSBvIEJvbGV0aW0gZGUgMjAyNCB0cmF6LCDDqSBhY2VyY2EgZGEgUEVBIG5vdmFtZW50ZSwgbmEgcXVhbCA5OSw1IG1pbGjDtWVzIGRlIHBlc3NvYXMgZmF6aWFtIHBhcnRlIGRlbGEgZW5xdWFudG8gYXBlbmFzIDYyLDIgbWlsaMO1ZXMgc8OjbyBjb250cmlidWludGVzIGRlIHBlc3NvYXMgZsOtc2ljYXMgbyBxdWUgc2lnbmlmaWNhIHF1ZSBtYWlzIG91IG1lbm9zIDM3JSBkZSBvY3VwYWRvcyBuYSBQRUEgbsOjbyBjb250cmlidWVtIHBhcmEgbyBSR1BTLCBwb3IgbW90aXZvcyBjb21vIGluZm9ybWFsaWRhZGUsIHRyYWJhbGhhZG9yZXMgZG9tw6lzdGljb3MgZSBkZW50cmUgb3V0cm9zLg0KDQoqKihHcsOhZmljbyA5KSoqDQoNCmBgYHtyfQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgR3LDoWZpY286IEltcGFjdG8gRmlzY2FsIGRvIFJHUFMgKCUgZG8gUElCKSDigJQgRGVzcGVzYSB2cy4gQXJyZWNhZGHDp8Ojbw0KIyBJZGVudGlkYWRlIFZpc3VhbCBPZmljaWFsOiBQYWRyw6NvIEliTWFjcm8gQkggKE1hbnVhbCBkZSBNYXJjYSkNCiMgRm9udGVzOiBTVE4gLyBCYWNlbiAoU0dTKSAvIE1pbmlzdMOpcmlvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIEFycmVjYWRhw6fDo28gTMOtcXVpZGEgLyBEZXN0YXF1ZXMNCklCX0FaVUxfQkFTRSAgICA8LSAiIzAyMDIzQyIgICMgRGVzcGVzYXMgUkdQUyAvIFTDrXR1bG9zIC8gQmFzZQ0KSUJfQlJBTkNPICAgICAgIDwtICIjRkZGRkZGIiAgIyBGdW5kbyBpbnN0aXR1Y2lvbmFsDQpJQl9BWlVMX01FRElPICAgPC0gIiMwMDJDNUUiICAjIEVsZW1lbnRvcyBkZSBhcG9pbw0KSUJfQVpVTF9DTEFSTyAgIDwtICIjNkI4QkE0IiAgIyBHYXAgRmlzY2FsICjDgXJlYSBTb21icmVhZGEpDQpJQl9DSU5aQV9FU0NVUk8gPC0gIiMzQTNBM0EiICAjIFRleHRvcywgZWl4b3MgZSBzdWJ0w610dWxvcw0KSUJfQ0lOWkFfQ0xBUk8gIDwtICIjQTZBNkE2IiAgIyBMaW5oYXMgZGUgZ3JhZGUsIGVpeG9zIGUgY3LDqWRpdG9zDQoNCiMg4pSA4pSAIDIuIERBRE9TIEhJU1TDk1JJQ09TIENPTlNPTElEQURPUyAoJSBETyBQSUIpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZGZfZmlzY2FsX3ByZXYgPC0gdGliYmxlKA0KICBhbm8gPSBhcy5jaGFyYWN0ZXIoMjAxMjoyMDI0KSwNCiAgYXJyZWNhZGFjYW8gPSBjKDUuMzIsIDUuNDEsIDUuNDgsIDUuMzksIDUuMzUsIDUuMzEsIDUuMzAsIDUuMzgsIDUuMzAsIDUuMzQsIDUuMzksIDUuNDIsIDUuNDYpLA0KICBkZXNwZXNhcyAgICA9IGMoNi44NSwgNi45NCwgNy4wNSwgNy4zMiwgNy44MiwgOC4wOCwgOC4yMSwgOC4zNSwgOC43OCwgOC4wMSwgNy44NSwgNy45MSwgNy45OSkNCikgJT4lDQogIG11dGF0ZSgNCiAgICBnYXAgPSBkZXNwZXNhcyAtIGFycmVjYWRhY2FvDQogICkNCg0KIyDilIDilIAgMy4gUkVOREVSSVpBw4fDg08gRE8gR1LDgUZJQ08g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX2Zpc2NhbF9wcmV2IDwtIGhpZ2hjaGFydCgpICU+JQ0KICBoY19jaGFydCgNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIGJhY2tncm91bmRDb2xvciA9IElCX0JSQU5DTywNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIikNCiAgKSAlPiUNCg0KICAjIMOBcmVhIGRlIHByZWVuY2hpbWVudG8gZG8gR2FwIEZpc2NhbCAoQXBvcnRlIGRvIFRlc291cm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJHYXAgRmlzY2FsIChBcG9ydGUgZG8gVGVzb3VybykiLA0KICAgIHR5cGUgPSAiYXJlYXJhbmdlIiwNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoDQogICAgICBkZl9maXNjYWxfcHJldiAlPiUgDQogICAgICAgIHRyYW5zbXV0ZShhbm8sIGFycmVjYWRhY2FvLCBkZXNwZXNhcykNCiAgICApLA0KICAgIGNvbG9yID0gSUJfQVpVTF9DTEFSTywNCiAgICBmaWxsT3BhY2l0eSA9IDAuMjUsDQogICAgbGluZVdpZHRoID0gMCwNCiAgICB6SW5kZXggPSAwLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKQ0KICApICU+JQ0KDQogICMgRGVzcGVzYXMgY29tIEJlbmVmw61jaW9zIGRvIFJHUFMgKEF6dWwgSWJNYWNybykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkJlbmVmw61jaW9zIEVtaXRpZG9zIFJHUFMgKCUgUElCKSIsDQogICAgZGF0YSA9IGRmX2Zpc2NhbF9wcmV2JGRlc3Blc2FzLA0KICAgIGNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgekluZGV4ID0gMiwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0LCBzeW1ib2wgPSAiY2lyY2xlIikNCiAgKSAlPiUNCg0KICAjIEFycmVjYWRhw6fDo28gTMOtcXVpZGEgZG8gUkdQUyAoQW1hcmVsbyBJYk1hY3JvKQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgPSAiQXJyZWNhZGHDp8OjbyBMw61xdWlkYSBSR1BTICglIFBJQikiLA0KICAgIGRhdGEgPSBkZl9maXNjYWxfcHJldiRhcnJlY2FkYWNhbywNCiAgICBjb2xvciA9IElCX0FNQVJFTE8sDQogICAgbGluZVdpZHRoID0gMywNCiAgICB6SW5kZXggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQsIHN5bWJvbCA9ICJkaWFtb25kIikNCiAgKSAlPiUNCg0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gZGZfZmlzY2FsX3ByZXYkYW5vLA0KICAgIGdyaWRMaW5lV2lkdGggPSAxLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKSksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlID0gNywgIyBBbm8gMjAxOQ0KICAgICAgICBjb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCA9IDMsDQogICAgICAgIGxhYmVsID0gbGlzdCgNCiAgICAgICAgICB0ZXh0ID0gIlJlZm9ybWEgMjAxOSIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMHB4IiksDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLA0KICAgICAgICAgIHkgPSAtMTANCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCg0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIiUgZG8gUElCIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKSwNCiAgICBtaW4gPSA0LA0KICAgIG1heCA9IDEwLA0KICAgIHRpY2tJbnRlcnZhbCA9IDEsDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICBsaW5lQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZTouMGZ9JSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICkNCiAgKSAlPiUNCg0KICAjIEFub3Rhw6fDo28gZGUgZGVzdGFxdWU6IEdhcCBGaXNjYWwgZGUgMjAyNA0KICBoY19hbm5vdGF0aW9ucygNCiAgICBsaXN0KA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgbGlzdCgNCiAgICAgICAgICBwb2ludCA9IGxpc3QoeCA9IDEyLCB5ID0gNi43MiwgeEF4aXMgPSAwLCB5QXhpcyA9IDApLA0KICAgICAgICAgIHRleHQgPSAiPGI+MjAyNDogR2FwIGRlIDIsNTMgcC5wLjwvYj48YnI+RGVzcGVzYTogNyw5OSUgfCBSZWNlaXRhOiA1LDQ2JTxicj48aT5GaW5hbmNpYWRvIHZpYSBUZXNvdXJvPC9pPiIsDQogICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkiLA0KICAgICAgICAgIGJvcmRlckNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgICAgICAgIGJvcmRlclJhZGl1cyA9IDYsDQogICAgICAgICAgYm9yZGVyV2lkdGggPSAxLA0KICAgICAgICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMHB4IiwgY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8pDQogICAgICAgICkNCiAgICAgICkNCiAgICApDQogICkgJT4lDQoNCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJQcmV2aWTDqm5jaWEgU29jaWFsIChSR1BTKTogRGVzcGVzYSwgQXJyZWNhZGHDp8OjbyBlIEdhcCBGaXNjYWwiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJib2xkIiwgZm9udFNpemUgPSAiMThweCIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiVmFsb3JlcyBleHByZXNzb3MgZW0gJSBkbyBQSUIgbm9taW5hbCAoMjAxMuKAkzIwMjQpIHwgw4FyZWEgc29tYnJlYWRhOiBpbnN1ZmljacOqbmNpYSBmaW5hbmNlaXJhIGNvYmVydGEgcGVsbyBUZXNvdXJvIiwNCiAgICBhbGlnbiA9ICJsZWZ0IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgYm9yZGVyQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBib3JkZXJSYWRpdXMgPSA2LA0KICAgIHZhbHVlRGVjaW1hbHMgPSAyLA0KICAgIHZhbHVlU3VmZml4ID0gIiUgZG8gUElCIg0KICApICU+JQ0KDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsDQogICAgaXRlbVN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCg0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IFNlY3JldGFyaWEgZG8gVGVzb3VybyBOYWNpb25hbCAoU1ROKSBlIEJhY2VuIChTR1MpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQpncmFmaWNvX2Zpc2NhbF9wcmV2DQpgYGANCg0KIyAqNTogTyBwcm9ibGVtYSBuYSByYWl6IGRvIEZpc2NhbCoNCg0KTWVkaWFudGUgYSB0b2RvIG8gY2Vuw6FyaW8gZW0gcXVlc3TDo28gZSBhbmFsaXNhbmRvIGNvbW8gbm9zIHByw7N4aW1vcyBhbm9zIG8gYXVtZW50byBkb3MgZ2FzdG9zIGUgZGFzIGRlc3Blc2FzIHJlbGFjaW9uYWRhcyDDoCBwcmV2aWTDqm5jaWEgcG9kZW0gY29ycm9lciBvIFBJQiBhb3MgcG91Y29zLCDDqSBuZWNlc3PDoXJpbyBjb21wcmVlbmRlciBkYSBvbmRlIHN1cmdlbSBlc3NlIGdyYW5kZSBhdW1lbnRvIGRlIGRlc3Blc2FzIGUgZ2FzdG9zIGUgY29tbyBub3Mgw7psdGltb3MgYW5vcyBlbGVzIHZlbSBzZSBpbnRlbnNpZmljYW5kbyBjYWRhIHZleiBtYWlzLiANCg0KTm92YW1lbnRlIGRlIGFjb3JkbyBjb20gbyBCRVBTLCBwb2RlLXNlIG9idGVyIGEgcXVhbnRpZGFkZSBkZSBiZW5lZsOtY2lvcyBjb25jZWRpZG9zIGUgZW1pdGlkb3MgcGVsbyBJTlNTIGUgaWRlbnRpZmljYXIgZGFkb3MgZGUgZXh0cmVtYSByZWxldsOibmNpYSBwYXJhIGEgYW7DoWxpc2UgZG8gZmlzY2FsLiBQcmltZWlybyDDqSBuZWNlc3PDoXJpbyBkZXN0YWNhciBhIGRpZmVyZW7Dp2EgZW50cmUgY29uY2VkaWRvIGUgZW1pdGlkbyBuZXNzZSBjZW7DoXJpbywgb3MgY29uY2VkaWRvcyByZXByZXNlbnRhbSBvcyBub3ZvcyBiZW5lZsOtY2lvcyBhcHJvdmFkb3Mgbm8gcGVyw61vZG8gZW0gcXVlc3TDo28sIGVucXVhbnRvIG9zIGVtaXRpZG9zIHPDo28gYXF1ZWxlcyBhdGl2b3MgcXVlIGrDoSBlc3TDo28gc2VuZG8gcGFnb3MgZSBlc3TDo28gZW0gImVzdG9xdWUiLiANCg0KTmEgc8OpcmllIGRlbnRybyBkbyBCb2xldGltIHF1ZSBhcHJlc2VudGEgYSBxdWFudGlkYWRlIGFudWFsIGRlIGJlbmVmw61jaW9zIGNvbmNlZGlkb3MgcGVsbyBJTlNTLCBkZXNkZSAyMDA2IGF0w6kgbWV0YWRlIGRlIDIwMjYsIHJlZmxldGUgdW1hIGRpbsOibWljYSBkZSBjcmVzY2ltZW50byBzb2JyZSBhIHZhcmnDoXZlbCBlbSBxdWVzdMOjbywgcHJpbmNpcGFsbWVudGUgYSBwYXJ0aXIgZGUgMjAyMywgaW7DrWNpbyBkbyAzwrogR292ZXJubyBMdWxhIHF1ZSByZXByZXNlbnRvdSBhIG1haW9yIHZhcmlhw6fDo28gYW51YWwgZGUgdG9kYSBhIHPDqXJpZSwgMTQsNCUuIE5lc3NlIGFubywgYXMgY29uY2Vzc8O1ZXMgZXN0YXZhbSBuYSBjYXNhIGRlIDUsMiBtaWxow7VlcywgbyBxdWUgbmEgw6lwb2NhIGrDoSBlcmEgbyBtYWlvciB2YWxvciBkZSB0b2RhIHPDqXJpZSwgcG9yw6ltIG8gw7psdGltbyB2YWxvciByZWdpc3RyYWRvIHF1ZSDDqSByZWZlcmVudGUgYSBqdW5obyBkZSAyMDI2IHJlZ2lzdHJvdSA4LDEgbWlsaMO1ZXMgZGUgbm92b3MgYmVuZWbDrWNpb3MgY29uY2VkaWRvcyBjb20gdmFyaWHDp8OjbyBhbnVhbCBkZSA2LDYlIGFwZW5hcyBuYSBtZXRhZGUgZG8gYW5vLiAqKEdyw6FmaWNvIDEwKSoNCg0KKiooR3LDoWZpY28gMTApKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogUXVhbnRpZGFkZSBBbnVhbCBkZSBCZW5lZsOtY2lvcyBDb25jZWRpZG9zIHBlbG8gSU5TUw0KIyBJZGVudGlkYWRlIFZpc3VhbCBPZmljaWFsOiBQYWRyw6NvIEliTWFjcm8gQkggKE1hbnVhbCBkZSBNYXJjYSkNCiMgRm9udGU6IEJvbGV0aW0gRXN0YXTDrXN0aWNvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwgKEJFUFMgVm9sLiAzMiBOwrogMDYpDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBQQUxFVEEgSU5TVElUVUNJT05BTCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCklCX0FNQVJFTE8gICAgICA8LSAiI0ZGQjgxRiINCklCX0FaVUxfQkFTRSAgICA8LSAiIzAyMDIzQyINCklCX0JSQU5DTyAgICAgICA8LSAiI0ZGRkZGRiINCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSINCklCX0FaVUxfQ0xBUk8gICA8LSAiIzZCOEJBNCINCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSINCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiINCg0KIyDilIDilIAgMi4gQkFTRSBERSBEQURPUyAoQkVQUyBWT0wuIDMyIE7CuiAwNiDigJQgSlVOSE8vMjAyNikg4pSA4pSA4pSA4pSA4pSA4pSADQpkZl9jb25jZXNzb2VzX2F0dWFsaXphZG8gPC0gdGliYmxlKA0KICBhbm8gPSBjKA0KICAgICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiLCAiMjAxNCIsDQogICAgIjIwMTUiLCAiMjAxNiIsICIyMDE3IiwgIjIwMTgiLCAiMjAxOSIsICIyMDIwIiwgIjIwMjEiLCAiMjAyMiIsICIyMDIzIiwNCiAgICAiMjAyNCIsICIyMDI1IiwgIkp1bDI1LUp1bjI2Ig0KICApLA0KICBjb25jZXNzb2VzX21pbCA9IGMoDQogICAgNDIzOCwgNDE3MywgNDQ2MSwgNDQ3MywgNDY0MCwgNDc2NywgNDk1NywgNTIwNywgNTIxMSwNCiAgICA0MzQ0LCA1MjQ2LCA1MTAzLCA1MTIzLCA1MTkwLCA0ODY4LCA0NzI5LCA1MjEyLCA1OTY0LA0KICAgIDY5MzgsIDc2NDUsIDgxNDYNCiAgKSwNCiAgdmFyX3BjdCA9IGMoDQogICAgNy4yLCAtMS41LCA2LjksIDAuMywgMy43LCAyLjcsIDQuMCwgNS4wLCAwLjEsDQogICAgLTE2LjYsIDIwLjgsIC0yLjcsIDAuNCwgMS4zLCAtNi4yLCAtMi44LCAxMC4yLCAxNC40LA0KICAgIDE2LjMsIDEwLjIsIDYuNg0KICApDQopICU+JQ0KICBtdXRhdGUoDQogICAgdmFyX2xhYmVsID0gcGFzdGUwKGlmX2Vsc2UodmFyX3BjdCA+IDAsICIrIiwgIiIpLCBmb3JtYXQodmFyX3BjdCwgZGVjaW1hbC5tYXJrID0gIiwiKSwgIiUiKQ0KICApDQoNCmRhZG9zX2NvbmNlc3NvZXNfc2VyaWUgPC0gcHVycnI6OnRyYW5zcG9zZSgNCiAgZGZfY29uY2Vzc29lc19hdHVhbGl6YWRvICU+JQ0KICAgIHRyYW5zbXV0ZSgNCiAgICAgIHkgICAgICAgID0gY29uY2Vzc29lc19taWwsDQogICAgICB2YXJfc3RyICA9IHZhcl9sYWJlbA0KICAgICkNCikNCg0KIyDilIDilIAgMy4gUkVOREVSSVpBw4fDg08gRE8gR1LDgUZJQ08g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX2NvbmNlc3NvZXNfMjAyNiA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgdHlwZSA9ICJjb2x1bW4iLA0KICAgIGJhY2tncm91bmRDb2xvciA9IElCX0JSQU5DTywNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIikNCiAgKSAlPiUNCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgY29sdW1uID0gbGlzdCgNCiAgICAgIGJvcmRlcldpZHRoID0gMCwNCiAgICAgIHBvaW50UGFkZGluZyA9IDAuMDUsDQogICAgICBncm91cFBhZGRpbmcgPSAwLjEyLA0KICAgICAgZGF0YUxhYmVscyA9IGxpc3QoDQogICAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgICBmb3JtYXQgPSAie3BvaW50Lnk6LC4wZn0iLA0KICAgICAgICBzdHlsZSA9IGxpc3QoDQogICAgICAgICAgY29sb3IgPSBJQl9BWlVMX0JBU0UsDQogICAgICAgICAgZm9udFNpemUgPSAiMTBweCIsDQogICAgICAgICAgZm9udFdlaWdodCA9ICJib2xkIiwNCiAgICAgICAgICB0ZXh0T3V0bGluZSA9ICJub25lIg0KICAgICAgICApLA0KICAgICAgICB5ID0gLTUNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJCZW5lZsOtY2lvcyBDb25jZWRpZG9zIiwNCiAgICBkYXRhID0gZGFkb3NfY29uY2Vzc29lc19zZXJpZSwNCiAgICBjb2xvciA9IElCX0FaVUxfTUVESU8NCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IGRmX2NvbmNlc3NvZXNfYXR1YWxpemFkbyRhbm8sDQogICAgZ3JpZExpbmVXaWR0aCA9IDAsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIpLA0KICAgICAgcm90YXRpb24gPSAtNDUNCiAgICApDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHRleHQgPSAiUXVhbnRpZGFkZSAoZW0gbWlsaGFyZXMpIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKSwNCiAgICBtaW4gPSAwLA0KICAgIG1heCA9IDkwMDAsDQogICAgdGlja0ludGVydmFsID0gMTAwMCwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlOiwuMGZ9IiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlF1YW50aWRhZGUgQW51YWwgZGUgQmVuZWbDrWNpb3MgQ29uY2VkaWRvcyBwZWxvIElOU1MgKDIwMDbigJMyMDI2KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJFdm9sdcOnw6NvIGRvIGZsdXhvIGRlIGNvbmNlc3PDtWVzIGFudWFpcyAoZW0gbWlsaGFyZXMpIHwgRGVzdGFxdWUgcGFyYSBvIHJlY29yZGUgZGUgOCwxNSBtaWxow7VlcyBhY3VtdWxhZG9zIGVtIDEyIG1lc2VzIChqdWwvMjXigJNqdW4vMjYpIiwNCiAgICBhbGlnbiA9ICJsZWZ0IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IEZBTFNFLA0KICAgIGJhY2tncm91bmRDb2xvciA9IElCX0JSQU5DTywNCiAgICBib3JkZXJDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGJvcmRlclJhZGl1cyA9IDYsDQogICAgZm9ybWF0dGVyID0gSlMoImZ1bmN0aW9uKCkgew0KICAgICAgcmV0dXJuICc8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZToxMnB4XCI+PGI+UGVyw61vZG86ICcgKyB0aGlzLmtleSArICc8L2I+PC9zcGFuPjxici8+JyArDQogICAgICAgICAgICAgJzxzcGFuIHN0eWxlPVwiY29sb3I6JyArIHRoaXMuc2VyaWVzLmNvbG9yICsgJ1wiPuKXjzwvc3Bhbj4gQ29uY2Vzc8O1ZXM6IDxiPicgKw0KICAgICAgICAgICAgIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRoaXMucG9pbnQueSwgMCwgJywnLCAnLicpICsgJyBtaWw8L2I+ICgnICsgdGhpcy5wb2ludC52YXJfc3RyICsgJyknOw0KICAgIH0iKQ0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBNaW5pc3TDqXJpbyBkYSBQcmV2aWTDqm5jaWEgU29jaWFsIOKAlCBCb2xldGltIEVzdGF0w61zdGljbyBkYSBQcmV2aWTDqm5jaWEgU29jaWFsIChCRVBTIFZvbC4gMzIgTsK6IDA2KS4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm8gQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9DTEFSTywgZm9udFNpemUgPSAiMTBweCIpDQogICkgJT4lDQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkNCg0KZ3JhZmljb19jb25jZXNzb2VzXzIwMjYNCmBgYA0KDQpFc3NlIGdyYW5kZSBhdW1lbnRvIG5vcyDDumx0aW1vcyAzIGFub3MgY29pbmNpZGUgY29tIGRpcmV0YW1lbnRlIGNvbSBhcyBwZXNzb2FzIG5hc2NpZGFzIG5hIMOpcG9jYSBkbyBwaWNvIGRvIGJhYnkgYm9vbSBuYWNpb25hbCwgZW50cmUgMTk1OCBlIDE5NjMsIGNvbXBsZXRhbmRvIG9zIHNldXMgNjAtNjUgYW5vcyBkZSBpZGFkZSBlIGF0aW5naW5kbyBhIGFwb3NlbnRhZG9yaWEsIMOpIGEgcGFyY2VsYSBkbyBtYWlvciBjb3J0ZSBkZW1vZ3LDoWZpY28gZGEgaGlzdMOzcmlhIGJyYXNpbGVpcmEgc2UgdG9ybmFuZG8gYmVuZWZpY2nDoXJpYSBlIGRlc2VxdWlsaWJyYW5kbyBhIGJhbGFuw6dhLiANCg0KRG8gb3V0cm8gbGFkbyBkYSBtb2VkYSwgYW8gYW5hbGlzYXIgYSBldm9sdcOnw6NvIGRhIHF1YW50aWRhZGUgZG9zICBiZW5lZsOtY2lvcyBlbWl0aWRvcyBhbyBsb25nbyBkb3MgYW5vcyBvIGVmZWl0byBkZSBkw6ljYWRhcyBkZSBjb25jZXNzw7VlcyBkZW1vbnN0cmEgdW0gbsO6bWVybyBkZSA0MiwyIG1pbGjDtWVzIGRlIGJlbmVmw61jaW9zIGRlc3RpbmFkb3MgcG9yIG1laW8gZG8gSU5TUyBlbSAyMDI2LiBObyBwcmltZWlybyBhbm8gZGEgc8OpcmllLCAyMDA2IG8gbsO6bWVybyB0b3RhbCBlcmEgcXVhc2UgZGUgMjksNiBtaWxow7VlcywgbG9nbyBob3V2ZSB1bSBhdW1lbnRvIGRlIDY5JSBlbSAxOSBhbm9zIGUgY29tbyBqw6EgYW5hbGlzYWRvIG5vIMO6bHRpbW8gZ3LDoWZpY28gbyBmZW7DtG1lbm8gdGVuZGUgYSBzZSB0b3JuYXIgY2FkYSB2ZXogbWFpcyBhY2VsZXJhZG8sIGFvIHNlIGNvbnNpZGVyYXIgbyBwYWRyw6NvIHJlY2VudGUgZG9zIMO6bHRpbW9zIGFub3MuIA0KDQpBIHJlc3BlaXRvIGRlIHZhbG9yZXMsIGVtIDIwMDYgbyB2YWxvciB0b3RhbCBkb3MgYmVuZWbDrWNvcyBlbWl0aWRvcyBlc3RhdmEgZW0gdG9ybm8gZGUgMzgxIGJpbGjDtWVzIGUgcGFzc291IHBhcmEgODIxIGJpbGjDtWVzIGVtIDIwMjYsIHVtIGF1bWVudG8gZGUgMTEwJSBlbSBtZW5vcyBkZSAxMCBhbm9zLiBWYWxlIGRlc3RhY2FyIHF1ZSBlc3NlcyB2YWxvcmVzIHNlIHJlZmVyZW0gYXBlbmFzIMOgIHBvcHVsYcOnw6NvIHVyYmFuYSwgYXBlc2FyIGRvIHZhbG9yIGRhIHBvcHVsYcOnw6NvIHJ1cmFsIHRhbWLDqW0gYXByZXNlbnRhciBncmFuZGVzIG7Dum1lcm9zLCBlc3RhbmRvIGhvamUgbmEgZmFpeGEgZGUgUiQgMTgzLDkgYmlsaMO1ZXMgZGUgcmVhaXMuIENvbnNpZGVyYW5kbyBvcyDDumx0aW1vcyB2YWxvcmVzIGRlIGFtYmFzIGFzIHPDqXJpZXMgcmVmZXJlbnRlcyBhIGp1bGhvIGRlIDIwMjYsIG8gdG90YWwgc29tYW5kbyBvIHVyYmFubyBlIG8gcnVyYWwgdG90YWxpemEgY2VyY2EgZGUgUiQgMSwwMTcgdHJpbGjDo28sIHZhbG9yIHByw7N4aW1vIGRhIHByb2plw6fDo28gZmVpdG8gcGVsbyBJRkkgYWJvcmRhZGEgbWFpcyBhY2ltYSwgZSBxdWUgZXN0aXB1bGF2YSB1bWEgZGVzcGVzYSB0b3RhbCBkZSBSJCAxLDA5MSB0cmlsaMOjbyBkZSByZWlzIHBhcmEgZXNzZSBhbm8uICooR3LDoWZpY28gMTEpKg0KDQoqKihHcsOhZmljbyAxMSkqKg0KDQpgYGB7cn0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEdyw6FmaWNvOiBWYWxvciBBY3VtdWxhZG8gZGUgQmVuZWbDrWNpb3MgRW1pdGlkb3MgcGVsbyBJTlNTDQojIElkZW50aWRhZGUgVmlzdWFsIE9maWNpYWw6IFBhZHLDo28gSWJNYWNybyBCSCAoTWFudWFsIGRlIE1hcmNhKQ0KIyBGb250ZTogQm9sZXRpbSBFc3RhdMOtc3RpY28gZGEgUHJldmlkw6puY2lhIFNvY2lhbCAoQkVQUyBWb2wuIDMyIE7CuiAwNikNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMg4pSA4pSAIDEuIEJBU0UgREUgREFET1MgKEJFUFMgVk9MLiAzMiBOwrogMDYg4oCUIEpVTkhPLzIwMjYpIOKUgOKUgOKUgOKUgOKUgOKUgA0KZGZfYmVuZWZpY2lvc192YWxvcl8yMDI2IDwtIHRpYmJsZSgNCiAgYW5vID0gYygNCiAgICAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLA0KICAgICIyMDE1IiwgIjIwMTYiLCAiMjAxNyIsICIyMDE4IiwgIjIwMTkiLCAiMjAyMCIsICIyMDIxIiwgIjIwMjIiLCAiMjAyMyIsDQogICAgIjIwMjQiLCAiMjAyNSIsICJKdWwyNS1KdW4yNiINCiAgKSwNCiAgdXJiYW5hID0gYygNCiAgICAzODEzNDAsIDM5ODQ2NywgNDExNDk2LCA0NDUxOTQsIDQ3NzY5MywgNDk4MDk0LCA1MzI1ODMsIDU2MDY5NCwgNTgzNzcwLA0KICAgIDU5MTI5OSwgNjI0NDc3LCA2NjcyMzIsIDY3OTU4NywgNjk2Mzc4LCA3MjE3MjksIDcwMDI4MSwgNzA4NDQzLCA3NDE0OTAsDQogICAgNzc5MTQ0LCA4MDI2NjksIDgyMTYxNw0KICApLA0KICBydXJhbCA9IGMoDQogICAgOTI2NTEsIDk4MzQzLCAxMDMxMzAsIDExNDY0OCwgMTIyNDg0LCAxMjQ1MjEsIDEzNzQzMCwgMTQ0Mzc0LCAxNDkyMDksDQogICAgMTUxNzA0LCAxNTc0OTksIDE2NDU4MCwgMTYzMzQ0LCAxNjUxNjYsIDE2ODU2NywgMTYxODQ0LCAxNjM1MDAsIDE3MzAzMywNCiAgICAxODMxNjEsIDE5MTYwMCwgMTk2ODY2DQogICkNCikNCg0KIyDilIDilIAgMi4gUkVOREVSSVpBw4fDg08gRE8gR1LDgUZJQ08g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX3ZhbG9yX2VtaXRpZG9fMjAyNiA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgbGluZVdpZHRoID0gMywNCiAgICAgIG1hcmtlciA9IGxpc3QoDQogICAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgICByYWRpdXMgPSAzLjUNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIA0KICAjIFPDqXJpZSAxOiBDbGllbnRlbGEgVXJiYW5hIChBenVsIEliTWFjcm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJVcmJhbmEiLA0KICAgIGRhdGEgPSBkZl9iZW5lZmljaW9zX3ZhbG9yXzIwMjYkdXJiYW5hLA0KICAgIGNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgIG1hcmtlciA9IGxpc3Qoc3ltYm9sID0gImNpcmNsZSIpDQogICkgJT4lDQogIA0KICAjIFPDqXJpZSAyOiBDbGllbnRlbGEgUnVyYWwgKEFtYXJlbG8gSWJNYWNybykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIlJ1cmFsIiwNCiAgICBkYXRhID0gZGZfYmVuZWZpY2lvc192YWxvcl8yMDI2JHJ1cmFsLA0KICAgIGNvbG9yID0gSUJfQU1BUkVMTywNCiAgICBtYXJrZXIgPSBsaXN0KHN5bWJvbCA9ICJkaWFtb25kIikNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIGNhdGVnb3JpZXMgPSBkZl9iZW5lZmljaW9zX3ZhbG9yXzIwMjYkYW5vLA0KICAgIGdyaWRMaW5lV2lkdGggPSAxLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIpLA0KICAgICAgcm90YXRpb24gPSAtNDUNCiAgICApDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIlIkIG1pbGjDtWVzIGNvbnN0YW50ZXMiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMXB4IikNCiAgICApLA0KICAgIG1pbiA9IDAsDQogICAgbWF4ID0gOTAwMDAwLA0KICAgIHRpY2tJbnRlcnZhbCA9IDEwMDAwMCwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlOiwuMGZ9IiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJFdm9sdcOnw6NvIGRvIFZhbG9yIEFjdW11bGFkbyBkZSBCZW5lZsOtY2lvcyBFbWl0aWRvcyBwZWxvIElOU1MgKDIwMDbigJMyMDI2KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJWYWxvcmVzIGVtIHJlYWlzIGNvbnN0YW50ZXMgcG9yIGNsaWVudGVsYSAoYXR1YWxpemFkb3MgcGVsbyBJTlBDIGEgcHJlw6dvcyBkZSBqdW5obyBkZSAyMDI2KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgYm9yZGVyQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBib3JkZXJSYWRpdXMgPSA2LA0KICAgIGhlYWRlckZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEycHgnPjxiPlBlcsOtb2RvOiB7cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4iLA0KICAgIHBvaW50Rm9ybWF0ID0gIjxzcGFuIHN0eWxlPSdjb2xvcjp7c2VyaWVzLmNvbG9yfSc+4pePPC9zcGFuPiBDbGllbnRlbGEge3Nlcmllcy5uYW1lfTogPGI+UiQge3BvaW50Lnk6LC4wZn0gbWk8L2I+PGJyLz4iDQogICkgJT4lDQogIA0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiLA0KICAgIGl0ZW1TdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAibm9ybWFsIiwgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIA0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IE1pbmlzdMOpcmlvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwg4oCUIEJvbGV0aW0gRXN0YXTDrXN0aWNvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwgKEJFUFMgVm9sLiAzMiBOwrogMDYpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQpncmFmaWNvX3ZhbG9yX2VtaXRpZG9fMjAyNg0KYGBgDQoNCk5vIGZpbSBkYSBhbsOhbGlzZSBkbyBCb2xldGltLCB0YW1iw6ltIGVudHJhIGVtIGV2aWTDqm5jaWEgb3V0cmEgcHJvYmxlbcOhdGljYSBlbSByZWxhw6fDo28gYSBjcmVzY2VudGUgZG9zIGdhc3RvcyBlbGV2YWRvcyBjb20gYmVuZWbDrWNpb3MsIGEgc3VhIGNvbXBvc2nDp8OjbyBwb3IgZXNww6ljaWUuIA0KDQpBcGVzYXIgZGEgbWFpb3JpYSBkb3MgYmVuZWbDrWNpb3MgY29uY2VkaWRvcyBzZSBkaXJlY2lvbmFyZW0gcGFyYSBvICJlc3RvcXVlIiBkb3MgZW1pdGlkb3MgZSBzZXIgbyBncmFuZGUgcmVzcG9uc8OhdmVsIHBvciBlc3NlIGF1bWVudG8gZGV0ZW5kbyB1bSBncmFuZGUgcGVzbywgYSBuYXR1cmV6YSBubyBiZW5lZsOtY2lvIG7Do28gcG9kZSBzZXIgZGVzY2FydGFkYSBwcmluY2lwYWxtZW50ZSBzZSBmb3IgYSByZXNwZWl0byBkbyBhc3Npc3RlbmNpYWwuIEFsw6ltIGRvIFJHUFMsIGZpbmFuY2lhZG8gcG9yIGNvbnRyaWJ1acOnw7VlcyBkZSBlbXByZWdhZG9yZXMgZSBlbXByZWdhZG9zIHF1ZSBpbmNsdWkgYXBvc2VudGFkb3JpYSBwb3IgaWRhZGUsIGludmFsaWRleiwgcGVuc8OjbyBwb3IgbW9ydGUsIGF1eMOtbGlvLWRvZW7Dp2EgZSBvdXRyb3MsIGV4aXN0ZSBvIGFzc2lzdGVuY2lhbCBxdWUgw6kgdG90YWxtZW50ZSBzZW0gY29udHJpYnVpw6fDo28gZSAxMDAlIGZpbmFuY2lhZG8gcGVsbyBUZXNvdXJvLCBjb20gYXBlbmFzIGRvaXMgYmVuZWbDrWNpb3MgQlBDIGFvIGlkb3NvICgrNjUgYW5vcyBhYmFpeG8gZGEgbGluaGEgZGEgcG9icmV6YSkgZSBCUEMgYW8gZGVmaWNpZW50ZS4gTsOjbyDDqSB1bWEgYXBvc2VudGFkb3JpYSBlIHNpbSB1bWEgYXNzaXN0w6puY2lhIHNvY2lhbC4gDQoNCkF0dWFsbWVudGUgbyB0b3RhbCBlIGJlbmVmaWNpw6FyaW9zIGRvIFJHUFMgZXN0w6EgZW0gdG9ybm8gZGUgMzUsNjcgbWlsaMO1ZXMgZW5xdWFudG8gb3MgYXNzaXN0ZW5jaWFkb3MgZXN0w6NvIGNvbSA2LDQgbWlsaMO1ZXMsIHBvcsOpbSBvIGludGVyZXNzYW50ZSBuw6NvIMOpIGFwZW5hcyBhbmFsaXNhciBhIGV2b2x1w6fDo28gZG8gUkdQUyBhbyBsb25nbyBkb3MgYW5vcyBkZSAxJS00JSwgZXNwZXJhZG8gYW8gY29uc2lkZXJhciBhIHRyYW5zacOnw6NvIGRlbW9ncsOhZmljYSwgbWFzIHNpbSBhIGV2b2x1w6fDo28gZG8gYXNzaXN0ZW5jaWFsaXNtbyBhIHVtYSB0YXhhIGRlIDIlLTclIGFvIGFubywgY29tIHVtIGdyYW5kZSBhdW1lbnRvIHJlY2VudGUsIHByaW5jaXBhbG1lbnRlIGUgbm92YW1lbnRlIG5vIGFubyBkZSAyMDIzIGNvbSB1bWEgZXhwbG9zw6NvIGRlIDExLDMlIGRlIHVtIGFubyBwcm8gb3V0cm8uIFRhaXMgZGFkb3MsIGFjZW5kZW0gdW0gbm92byBhbGVydGEsIGRlIHF1ZSBhbMOpbSBkbyBwcm9ibGVtYSBlbSByZWxhw6fDo28gYW8gZW52ZWxoZWNpbWVudG8gZGFxdWVsZXMgcXVlIGVudmVsaGVjZXJhbSBtYXMgcXVlIGNvbnRyaWJ1w61yYW0sIGRvIG91dHJvIGxhZG8gdGVtb3MgdW0gcG9zc8OtdmVsIGF1bWVudG8gZGUgaWRvc29zIHF1ZSBuZWNlc3NpdGFtIGRlIGFzc2lzdMOqbmNpYSBzb2NpYWwsIHNlbSBuZW5odW0gdGlwbyBkZSBjb250cmlidWnDp8OjbywgbWFpcyB1bWEgdmFyacOhdmVsIGluZGljYW5kbyBxdWUgYSBjb250YSBkbyBmaXNjYWwgcG9kZSBuw6NvIGZlY2hhciBsb2dvIG1haXMuICooR3LDoWZpY28gMTIpKg0KDQoqKihHcsOhZmljbyAxMikqKg0KDQpgYGB7cn0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEdyw6FmaWNvOiBDb21wb3Npw6fDo28gZG9zIEJlbmVmw61jaW9zIEVtaXRpZG9zIOKAlCBSR1BTIHZzLiBCUEMNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBCb2xldGltIEVzdGF0w61zdGljbyBkYSBQcmV2aWTDqm5jaWEgU29jaWFsIChCRVBTIFZvbC4gMzIgTsK6IDA2KQ0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyDilIDilIAgMS4gQkFTRSBERSBEQURPUyBDT01QTEVUQSAoMjAwNuKAkzIwMjUgREVaRU1CUk8gKyBKVU4vMjAyNikNCmRmX2dydXBvc19hdHVhbGl6YWRvIDwtIHRpYmJsZSgNCiAgYW5vID0gYygNCiAgICAiMjAwNiIsICIyMDA3IiwgIjIwMDgiLCAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLA0KICAgICIyMDE1IiwgIjIwMTYiLCAiMjAxNyIsICIyMDE4IiwgIjIwMTkiLCAiMjAyMCIsICIyMDIxIiwgIjIwMjIiLCAiMjAyMyIsDQogICAgIjIwMjQiLCAiMjAyNSIsICJKdW4vMjYiDQogICksDQogIHJncHNfZXhhdG8gPSBjKA0KICAgIDIxNjQ0ODg2LCAyMjA2NjI2MywgMjI3NzYyMDUsIDIzNTM0NDk3LCAyNDQyNjg4MiwgMjUxNzYzMjMsIDI2MDMyODU1LA0KICAgIDI3MDA5MDExLCAyNzgxODk3MywgMjgyNzYzNDcsIDI5MTgzMzgzLCAyOTgwNDk2NCwgMzAyNzg2NTUsIDMwODY1NzgzLA0KICAgIDMxMjM5OTA4LCAzMTUyMjY4NywgMzI0MTI5MjcsIDMzNTA0NjI2LCAzNDM5NjA4MywgMzUxNzMwNzEsIDM1NjcwNzUxDQogICksDQogIGFzc2lzdGVuY2lhbF9leGF0byA9IGMoDQogICAgMjkyMzg5NCwgMzA4MDgyMSwgMzI5NjU2NiwgMzQ4OTI0MiwgMzY4OTIyMSwgMzg0OTg5NSwgMzk5OTQ2MiwgNDE2NTk1NiwNCiAgICA0MzEwNDQ4LCA0NDAzMTU0LCA0NTUxNTAxLCA0NjcyODI1LCA0NzYwOTY2LCA0NzUyNDQwLCA0ODY5NDMxLCA0ODE3ODMwLA0KICAgIDUxOTU4MDIsIDU3ODM0ODIsIDYzNTg2NTUsIDY0NTUyMDYsIDY0NDY0NTMNCiAgKQ0KKSAlPiUNCiAgbXV0YXRlKA0KICAgIHRvdGFsX2V4YXRvID0gcmdwc19leGF0byArIGFzc2lzdGVuY2lhbF9leGF0bywNCiAgICByZ3BzX21pICAgICA9IHJvdW5kKHJncHNfZXhhdG8gLyAxZTYsIDIpLA0KICAgIGFzc2lzdF9taSAgID0gcm91bmQoYXNzaXN0ZW5jaWFsX2V4YXRvIC8gMWU2LCAyKSwNCiAgICB0b3RhbF9taSAgICA9IHJvdW5kKHRvdGFsX2V4YXRvIC8gMWU2LCAyKSwNCiAgICANCiAgICAjIEPDoWxjdWxvIGRhcyB2YXJpYcOnw7VlcyBwZXJjZW50dWFpcyBlbSByZWxhw6fDo28gYW8gcGVyw61vZG8gYW50ZXJpb3INCiAgICB2YXJfcmdwcyAgID0gcm91bmQoKHJncHNfZXhhdG8gLSBsYWcocmdwc19leGF0bykpIC8gbGFnKHJncHNfZXhhdG8pICogMTAwLCAxKSwNCiAgICB2YXJfYXNzaXN0ID0gcm91bmQoKGFzc2lzdGVuY2lhbF9leGF0byAtIGxhZyhhc3Npc3RlbmNpYWxfZXhhdG8pKSAvIGxhZyhhc3Npc3RlbmNpYWxfZXhhdG8pICogMTAwLCAxKSwNCiAgICB2YXJfdG90YWwgID0gcm91bmQoKHRvdGFsX2V4YXRvIC0gbGFnKHRvdGFsX2V4YXRvKSkgLyBsYWcodG90YWxfZXhhdG8pICogMTAwLCAxKSwNCiAgICANCiAgICB2YXJfcmdwc19zdHIgICA9IGlmX2Vsc2UoaXMubmEodmFyX3JncHMpLCAiIiwgcGFzdGUwKGlmX2Vsc2UodmFyX3JncHMgPiAwLCAiKyIsICIiKSwgZm9ybWF0KHZhcl9yZ3BzLCBkZWNpbWFsLm1hcmsgPSAiLCIpLCAiJSIpKSwNCiAgICB2YXJfYXNzaXN0X3N0ciA9IGlmX2Vsc2UoaXMubmEodmFyX2Fzc2lzdCksICIiLCBwYXN0ZTAoaWZfZWxzZSh2YXJfYXNzaXN0ID4gMCwgIisiLCAiIiksIGZvcm1hdCh2YXJfYXNzaXN0LCBkZWNpbWFsLm1hcmsgPSAiLCIpLCAiJSIpKSwNCiAgICB2YXJfdG90YWxfc3RyICA9IGlmX2Vsc2UoaXMubmEodmFyX3RvdGFsKSwgIiIsIHBhc3RlMChpZl9lbHNlKHZhcl90b3RhbCA+IDAsICIrIiwgIiIpLCBmb3JtYXQodmFyX3RvdGFsLCBkZWNpbWFsLm1hcmsgPSAiLCIpLCAiJSIpKQ0KICApDQoNCmRhZG9zX3JncHNfc3RhY2sgPC0gcHVycnI6OnRyYW5zcG9zZSgNCiAgZGZfZ3J1cG9zX2F0dWFsaXphZG8gJT4lDQogICAgdHJhbnNtdXRlKA0KICAgICAgeSAgICAgICAgICAgICA9IHJncHNfbWksDQogICAgICB2YXJfc3RyICAgICAgID0gdmFyX3JncHNfc3RyLA0KICAgICAgdG90YWxfZ2VyYWwgICA9IHRvdGFsX21pLA0KICAgICAgdmFyX3RvdGFsX3N0ciA9IHZhcl90b3RhbF9zdHINCiAgICApDQopDQoNCmRhZG9zX2Fzc2lzdF9zdGFjayA8LSBwdXJycjo6dHJhbnNwb3NlKA0KICBkZl9ncnVwb3NfYXR1YWxpemFkbyAlPiUNCiAgICB0cmFuc211dGUoDQogICAgICB5ICAgICAgICAgICAgID0gYXNzaXN0X21pLA0KICAgICAgdmFyX3N0ciAgICAgICA9IHZhcl9hc3Npc3Rfc3RyLA0KICAgICAgdG90YWxfZ2VyYWwgICA9IHRvdGFsX21pLA0KICAgICAgdmFyX3RvdGFsX3N0ciA9IHZhcl90b3RhbF9zdHINCiAgICApDQopDQoNCiMg4pSA4pSAIDIuIFJFTkRFUklaQcOHw4NPIERPIEdSw4FGSUNPIEVNUElMSEFETyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmdyYWZpY29fZW1waWxoYWRvXzIwMjYgPC0gaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGNvbHVtbiA9IGxpc3QoDQogICAgICBzdGFja2luZyA9ICJub3JtYWwiLA0KICAgICAgYm9yZGVyV2lkdGggPSAwLA0KICAgICAgcG9pbnRQYWRkaW5nID0gMC4wNSwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMTINCiAgICApDQogICkgJT4lDQogIA0KICAjIFPDqXJpZSAxOiBSR1BTIChCYXNlIGRhIENvbHVuYSDigJQgQXp1bCBJYk1hY3JvKQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgPSAiUHJldmlkZW5jacOhcmlvcyAoUkdQUykiLA0KICAgIGRhdGEgPSBkYWRvc19yZ3BzX3N0YWNrLA0KICAgIGNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgIGRhdGFMYWJlbHMgPSBsaXN0KA0KICAgICAgZW5hYmxlZCA9IFRSVUUsDQogICAgICBmb3JtYXQgPSAie3BvaW50Lnk6LjFmfSIsDQogICAgICBzdHlsZSA9IGxpc3QoDQogICAgICAgIGNvbG9yID0gSUJfQlJBTkNPLA0KICAgICAgICBmb250U2l6ZSA9ICI5cHgiLA0KICAgICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgICB0ZXh0T3V0bGluZSA9ICJub25lIg0KICAgICAgKSwNCiAgICAgIHkgPSAxMg0KICAgICkNCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIDI6IEFzc2lzdGVuY2lhaXMgKFRvcG8gZGEgQ29sdW5hIOKAlCBBbWFyZWxvIEliTWFjcm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJBc3Npc3RlbmNpYWlzIChCUEMvTE9BUykiLA0KICAgIGRhdGEgPSBkYWRvc19hc3Npc3Rfc3RhY2ssDQogICAgY29sb3IgPSBJQl9BTUFSRUxPLA0KICAgIGRhdGFMYWJlbHMgPSBsaXN0KA0KICAgICAgZW5hYmxlZCA9IFRSVUUsDQogICAgICBmb3JtYXQgPSAie3BvaW50Lnk6LjFmfSIsDQogICAgICBzdHlsZSA9IGxpc3QoDQogICAgICAgIGNvbG9yID0gSUJfQVpVTF9CQVNFLA0KICAgICAgICBmb250U2l6ZSA9ICI5cHgiLA0KICAgICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgICB0ZXh0T3V0bGluZSA9ICJub25lIg0KICAgICAgKSwNCiAgICAgIHkgPSAxMA0KICAgICkNCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIDM6IFRvdGFsaXphZG9yIG5vIHRvcG8gZGUgY2FkYSBjb2x1bmENCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIlRvdGFsIEdlcmFsIiwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIGRhdGEgPSBkZl9ncnVwb3NfYXR1YWxpemFkbyR0b3RhbF9taSwNCiAgICBjb2xvciA9ICJ0cmFuc3BhcmVudCIsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpLA0KICAgIGVuYWJsZU1vdXNlVHJhY2tpbmcgPSBGQUxTRSwNCiAgICBkYXRhTGFiZWxzID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgeSA9IC02LA0KICAgICAgZm9ybWF0ID0gIjxiPnt5Oi4xZn08L2I+IiwNCiAgICAgIHN0eWxlID0gbGlzdCgNCiAgICAgICAgY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sDQogICAgICAgIGZvbnRTaXplID0gIjEwcHgiLA0KICAgICAgICB0ZXh0T3V0bGluZSA9ICJub25lIg0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIGNhdGVnb3JpZXMgPSBkZl9ncnVwb3NfYXR1YWxpemFkbyRhbm8sDQogICAgZ3JpZExpbmVXaWR0aCA9IDAsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgdGlja0NvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTBweCIpLA0KICAgICAgcm90YXRpb24gPSAtNDUNCiAgICApDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIlF1YW50aWRhZGUgKGVtIG1pbGjDtWVzIGRlIGJlbmVmw61jaW9zKSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgbWluID0gMCwNCiAgICBtYXggPSA0OCwNCiAgICB0aWNrSW50ZXJ2YWwgPSA2LA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0YwRjBGMCIsDQogICAgbGluZUNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIGZvcm1hdCA9ICJ7dmFsdWU6LjBmfSBtaSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiQ29tcG9zacOnw6NvIGRvIEVzdG9xdWUgZGUgQmVuZWbDrWNpb3MgRW1pdGlkb3M6IFJHUFMgdnMuIEFzc2lzdGVuY2lhaXMiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJib2xkIiwgZm9udFNpemUgPSAiMThweCIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiRGlzdHJpYnVpw6fDo28gZG8gZXN0b3F1ZSBhdGl2byBlbSBkZXplbWJybyBkZSBjYWRhIGFubyBlIHBvc2nDp8OjbyBlbSBqdW5obyBkZSAyMDI2IChlbSBtaWxow7VlcykiLA0KICAgIGFsaWduID0gImxlZnQiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIA0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIGJvcmRlckNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgYm9yZGVyUmFkaXVzID0gNiwNCiAgICBmb3JtYXR0ZXIgPSBKUygiZnVuY3Rpb24oKSB7DQogICAgICB2YXIgaGVhZGVyID0gJzxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjEycHhcIj48Yj5QZXLDrW9kbzogJyArIHRoaXMueCArICc8L2I+PC9zcGFuPjxici8+JzsNCiAgICAgIHZhciBjb3JwbyA9ICcnOw0KICAgICAgdmFyIHRvdGFsTWkgPSAwOw0KICAgICAgdmFyIHZhclRvdGFsID0gJyc7DQoNCiAgICAgIHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24ocCkgew0KICAgICAgICBpZiAocC5zZXJpZXMubmFtZSAhPT0gJ1RvdGFsIEdlcmFsJykgew0KICAgICAgICAgIHZhciB2YXJUZXh0byA9IHAucG9pbnQudmFyX3N0ciAhPT0gJycgPyAnIDxiPignICsgcC5wb2ludC52YXJfc3RyICsgJyk8L2I+JyA6ICcnOw0KICAgICAgICAgIGNvcnBvICs9ICc8c3BhbiBzdHlsZT1cImNvbG9yOicgKyBwLnNlcmllcy5jb2xvciArICdcIj7il488L3NwYW4+ICcgKw0KICAgICAgICAgICAgICAgICAgIHAuc2VyaWVzLm5hbWUgKyAnOiA8Yj4nICsNCiAgICAgICAgICAgICAgICAgICBIaWdoY2hhcnRzLm51bWJlckZvcm1hdChwLnksIDIsICcsJywgJy4nKSArICcgbWk8L2I+JyArIHZhclRleHRvICsgJzxici8+JzsNCiAgICAgICAgfQ0KICAgICAgICBpZiAocC5wb2ludC50b3RhbF9nZXJhbCkgew0KICAgICAgICAgIHRvdGFsTWkgPSBwLnBvaW50LnRvdGFsX2dlcmFsOw0KICAgICAgICAgIHZhclRvdGFsID0gcC5wb2ludC52YXJfdG90YWxfc3RyICE9PSAnJyA/ICcgPGI+KCcgKyBwLnBvaW50LnZhcl90b3RhbF9zdHIgKyAnKTwvYj4nIDogJyc7DQogICAgICAgIH0NCiAgICAgIH0pOw0KDQogICAgICB2YXIgcm9kYXBlID0gJzxociBzdHlsZT1cIm1hcmdpbjo0cHggMDsgYm9yZGVyOjA7IGJvcmRlci10b3A6MXB4IHNvbGlkICNFNUU3RUI7XCIvPicgKw0KICAgICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT1cImNvbG9yOiMwMjAyM0NcIj7il488L3NwYW4+IDxiPlRvdGFsIEVtaXRpZG86ICcgKw0KICAgICAgICAgICAgICAgICAgIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRvdGFsTWksIDIsICcsJywgJy4nKSArICcgbWk8L2I+JyArIHZhclRvdGFsOw0KDQogICAgICByZXR1cm4gaGVhZGVyICsgY29ycG8gKyByb2RhcGU7DQogICAgfSIpDQogICkgJT4lDQogIA0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiLA0KICAgIGl0ZW1TdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAibm9ybWFsIiwgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIA0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IE1pbmlzdMOpcmlvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwg4oCUIEJvbGV0aW0gRXN0YXTDrXN0aWNvIGRhIFByZXZpZMOqbmNpYSBTb2NpYWwgKEJFUFMgVm9sLiAzMiBOwrogMDYpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQpncmFmaWNvX2VtcGlsaGFkb18yMDI2DQpgYGANCg0KIyAqNjpJbXBhY3RvIG5vIEludmVzdGltZW50byBlIG5hIFBvdXBhbsOnYSogDQoNCkFww7NzIGRlc3RyaW5jaGFyIHRvZGEgYSBwcm9ibGVtw6F0aWNhIHByZXNlbnRlIGRlbnRybyBkbyBmaXNjYWwgYnJhc2lsZWlybywgb3V0cm8gaW1wYWN0byBkYSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2Egc2UgZGEgcG9yIGNvbnRhIGRhIHBhcnRlIG1vbmV0w6FyaWEgZW52b2x2ZW5kbyBwb3VwYW7Dp2FzLCBpbnZlc3RpbWVudG9zIGUgdGF4YXMgZGUganVyb3MuIA0KDQpDb20gbyBhdW1lbnRvIGRhIHBvcHVsYcOnw6NvIGlkb3NhLCBlc3NhIHBhcmNlbGEgZGEgcG9wdWxhw6fDo28gY29zdHVtYSBjb25zdW1pciBlIGludmVzdGlyIG1lbm9zLCBhbGdvIHF1ZSBwb2RlIGRlc2FjZWxlcmFyIGEgZWNvbm9taWEgYWluZGEgbWFpcyBlbSB1bSBsb25nbyBwcmF6by4gQSB0YXhhIGRlIHBvdXBhbsOnYSBlc3TDoSAxNSw1JSwgcmVzdWx0YWRvIGRvIDHCuiBUcmltZXN0cmUgZGUgMjAyNiwgZW5xdWFudG8gYSB0YXhhIGRlIGludmVzdGltZW50byBzZSBlbmNvbnRyYSBlbSAxNiw1JSwgbyBxdWUgaW5kaWNhIHVtIGdhcCBkZSBwb3VwYW7Dp2EgYWJlcnRhIG5hIHF1YWwgbyBicmFzaWxlaXJvIGrDoSBkZXBlbmRlIGRhIHBvdXBhbsOnYSBleHRlcm5hIHBhcmEgZmVjaGFyIG8gMSUgbmVzc2EgYW7DoWxpc2UuIE8gZW52ZWxoZWNpbWVudG8gZGEgcG9wdWxhw6fDo28gcG9kZSBjb21wcmltaXIgYWluZGEgbWFpcyBhIHBvdXBhbsOnYSBwcml2YWRhLCBlbnF1YW50byBvIGTDqWZpY2l0IHByZXZpZGVuY2nDoXJpbyB2aW5kbyBkbyBSR1BTIHBpb3JhIGFpbmRhIG1haXMgYSBwb3VwYW7Dp2EgbmVnYXRpdmEgcMO6YmxpY2EuICooR3LDoWZpY28gMTMpKg0KDQpBbMOpbSBkYSBwb3VwYW7Dp2EgZGVjYWlyLCBvIGxhZG8gZG8gaW52ZXN0aW1lbnRvIHRhbWLDqW0gcG9kZSBhcHJlc2VudGFyIHVtYSBxdWVkYSBwb3LDqW0gZW0gdW1hIGVzY2FsYSBtZW5vciwgcG9pcyBqdW50YW1lbnRlIGNvbSBvIGVudmVsaGVjaW1lbnRvLCBhbGd1bnMgc2V0b3JlcyBwb2RlbSBzZSB0b3JuYXIgbWFpcyBkZW1hbmRhZG9zIGUgYXRyYWlyIGNhcGl0YWwsIGNvbW8gc2HDumRlIGUgYmVtLWVzdGFyLCB0dXJpc21vIGUgbGF6ZXIsIGluZnJhZXN0cnV0dXJhIHBhcmEgaWRvc29zIGUgZGVudHJlIG91dHJvcy4gDQoNCkNvbSBhbWJhcyBlbSB1bWEgcG9zc8OtdmVsIHF1ZWRhLCBhIHNpdHVhw6fDo28gZGEgZXN0YWduYcOnw6NvIGRhIGVjb25vbWlhIG91IGRlc2FjZWxlcmHDp8OjbyBkbyBQSUIgZW50cmEgZW0gdmlnw6puY2lhIG5vdmFtZW50ZSwgcG9pcyBhbMOpbSBkbyBQSUIgc2VyIGltcGFjdGFkbyBwZWxvIGxhZG8gZGEgcHJvZHV0aXZpZGFkZSBlIGRvIGZpc2NhbCwgZW0gb3V0cmEgZnJlbnRlIGEgcXVlZGEgZGEgYXRpdmlkYWRlIGVjb27DtG1pY2EgcG9kZSBvY29ycmVyIHBlbGEgZmFsdGEgZGUgaW52ZXN0aW1lbnRvIGUgcXVlZGEgZGEgcG91cGFuw6dhLiANCg0KKiooR3LDoWZpY28gMTMpKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogVGF4YSBkZSBQb3VwYW7Dp2EgdnMuIFRheGEgZGUgSW52ZXN0aW1lbnRvICglIGRvIFBJQikNCiMgSWRlbnRpZGFkZSBWaXN1YWwgT2ZpY2lhbDogUGFkcsOjbyBJYk1hY3JvIEJIIChNYW51YWwgZGUgTWFyY2EpDQojIEZvbnRlOiBJQkdFIOKAlCBDb250YXMgTmFjaW9uYWlzIFRyaW1lc3RyYWlzIChDTlQpDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFByZXZlbsOnw6NvIHBhcmEgY2FtaW5ob3MgdGVtcG9yw6FyaW9zIG5vIFdpbmRvd3MgY29tIGFjZW50dWHDp8Ojbw0KZGlyLmNyZWF0ZSgiQzovUnRlbXAiLCBzaG93V2FybmluZ3MgPSBGQUxTRSkNClN5cy5zZXRlbnYoVE1QRElSID0gIkM6L1J0ZW1wIiwgVE1QID0gIkM6L1J0ZW1wIiwgVEVNUCA9ICJDOi9SdGVtcCIpDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyDilIDilIAgMS4gREVGSU5Jw4fDg08gREEgUEFMRVRBIElOU1RJVFVDSU9OQUwgKEdVSUEgREUgTUFSQ0EpIOKUgOKUgOKUgOKUgOKUgOKUgA0KSUJfQU1BUkVMTyAgICAgIDwtICIjRkZCODFGIiAgIyBUYXhhIGRlIFBvdXBhbsOnYSAvIERlc3RhcXVlcw0KSUJfQVpVTF9CQVNFICAgIDwtICIjMDIwMjNDIiAgIyBUYXhhIGRlIEludmVzdGltZW50byAvIFTDrXR1bG9zIC8gQmFzZSBpbnN0aXR1Y2lvbmFsDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgRWxlbWVudG9zIGRlIGFwb2lvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfQ0xBUk8gICA8LSAiIzZCOEJBNCIgICMgR2FwIEZpc2NhbC9FeHRlcm5vICjDgXJlYSBTb21icmVhZGEpDQpJQl9DSU5aQV9FU0NVUk8gPC0gIiMzQTNBM0EiICAjIFRleHRvcywgZWl4b3MsIHN1YnTDrXR1bG9zIGUgYW5vdGHDp8O1ZXMNCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiIgICMgTGluaGFzIGRlIGdyYWRlLCBkaXZpc29yZXMgZSBjcsOpZGl0b3MNCg0KIyDilIDilIAgMi4gQkFTRSBERSBEQURPUyBFIEPDgUxDVUxPIERBUyDDgVJFQVMgREUgR0FQIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KYW5vcyA8LSAyMDAwOjIwMjYNCg0KdGF4YV9pbnZlc3RpbWVudG8gPC0gYygNCiAgMTguMzUsIDE4LjQ4LCAxNy45MywgMTYuNjMsIDE3LjMzLCAxNy4wOCwgMTcuMjMsIDE4LjAwLCAxOS4zOCwgMTkuMDMsDQogIDIwLjUzLCAyMC42MCwgMjAuNzMsIDIwLjkwLCAxOS45MCwgMTcuODMsIDE1LjUzLCAxNC41NSwgMTUuMDgsIDE1LjQ4LA0KICAxNi41MCwgMTcuOTMsIDE3LjgwLCAxNi40MywgMTYuOTAsIDE2Ljg4LCAxNi41MA0KKQ0KDQp0YXhhX3BvdXBhbmNhIDwtIGMoDQogIDE0LjEwLCAxMy42NSwgMTUuNDUsIDE2LjQwLCAxOC45MCwgMTguMTMsIDE4LjM4LCAxOS4zNSwgMTkuMjMsIDE2LjM1LA0KICAxNy43OCwgMTguNjMsIDE3LjcwLCAxOC4yMCwgMTYuMTUsIDE0LjU1LCAxMy40MywgMTMuNjUsIDEyLjc1LCAxMi4yOCwNCiAgMTQuODUsIDE3LjI4LCAxNS44OCwgMTUuMDMsIDE0LjE1LCAxNC40NSwgMTUuNTANCikNCg0KZGZfbWFjcm9fdGF4YXMgPC0gdGliYmxlKA0KICBhbm8gICAgICAgICAgPSBhcy5jaGFyYWN0ZXIoYW5vcyksDQogIGludmVzdGltZW50byA9IHRheGFfaW52ZXN0aW1lbnRvLA0KICBwb3VwYW5jYSAgICAgPSB0YXhhX3BvdXBhbmNhLA0KICBnYXAgICAgICAgICAgPSByb3VuZChpbnZlc3RpbWVudG8gLSBwb3VwYW5jYSwgMiksDQogIGxvdyAgICAgICAgICA9IHBtaW4oaW52ZXN0aW1lbnRvLCBwb3VwYW5jYSksDQogIGhpZ2ggICAgICAgICA9IHBtYXgoaW52ZXN0aW1lbnRvLCBwb3VwYW5jYSkNCikNCg0KIyDilIDilIAgMy4gUkVOREVSSVpBw4fDg08gRE8gR1LDgUZJQ08g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX3BvdXBhbmNhX2ludmVzdGltZW50b190YXhhcyA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICkgJT4lDQogIA0KICAjIMOBcmVhIGRlIEdhcCBlbnRyZSBhcyBjdXJ2YXMgKE5lY2Vzc2lkYWRlIC8gUG91cGFuw6dhIEV4dGVybmEpDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJHYXAgKFBvdXBhbsOnYSBFeHRlcm5hIC8gRGVzY29tcGFzc28pIiwNCiAgICB0eXBlID0gImFyZWFyYW5nZSIsDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRmX21hY3JvX3RheGFzICU+JSB0cmFuc211dGUoYW5vLCBsb3csIGhpZ2gpKSwNCiAgICBjb2xvciA9IElCX0FaVUxfQ0xBUk8sDQogICAgZmlsbE9wYWNpdHkgPSAwLjIyLA0KICAgIGxpbmVXaWR0aCA9IDAsDQogICAgekluZGV4ID0gMCwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkNCiAgKSAlPiUNCiAgDQogICMgU8OpcmllIDE6IFRheGEgZGUgSW52ZXN0aW1lbnRvIChBenVsIEliTWFjcm8pDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJUYXhhIGRlIEludmVzdGltZW50byAoRkJDRiAlIFBJQikiLA0KICAgIGRhdGEgPSBkZl9tYWNyb190YXhhcyRpbnZlc3RpbWVudG8sDQogICAgY29sb3IgPSBJQl9BWlVMX0JBU0UsDQogICAgbGluZVdpZHRoID0gMywNCiAgICB6SW5kZXggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQsIHN5bWJvbCA9ICJjaXJjbGUiKQ0KICApICU+JQ0KICANCiAgIyBTw6lyaWUgMjogVGF4YSBkZSBQb3VwYW7Dp2EgKEFtYXJlbG8gSWJNYWNybykNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIlRheGEgZGUgUG91cGFuw6dhICglIFBJQikiLA0KICAgIGRhdGEgPSBkZl9tYWNyb190YXhhcyRwb3VwYW5jYSwNCiAgICBjb2xvciA9IElCX0FNQVJFTE8sDQogICAgbGluZVdpZHRoID0gMywNCiAgICB6SW5kZXggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQsIHN5bWJvbCA9ICJkaWFtb25kIikNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIGNhdGVnb3JpZXMgPSBkZl9tYWNyb190YXhhcyRhbm8sDQogICAgZ3JpZExpbmVXaWR0aCA9IDEsDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICBsaW5lQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICB0aWNrQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMHB4IiksDQogICAgICByb3RhdGlvbiA9IC00NQ0KICAgICksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlID0gNiwgIyAyMDA2IChCb29tIGRlIENvbW1vZGl0aWVzKQ0KICAgICAgICBjb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCA9IDMNCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB2YWx1ZSA9IDEzLCAjIDIwMTMgKFBpY28gZGUgSW52ZXN0aW1lbnRvKQ0KICAgICAgICBjb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCA9IDMNCiAgICAgICksDQogICAgICBsaXN0KA0KICAgICAgICB2YWx1ZSA9IDIwLCAjIDIwMjAgKENob3F1ZSBDT1ZJRCkNCiAgICAgICAgY29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICAgICAgd2lkdGggPSAxLjUsDQogICAgICAgIGRhc2hTdHlsZSA9ICJEb3QiLA0KICAgICAgICB6SW5kZXggPSAzDQogICAgICApDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICIlIGRvIFBJQiIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgbWluID0gMTAsDQogICAgbWF4ID0gMjQsDQogICAgdGlja0ludGVydmFsID0gMiwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlOi4wZn0lIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKQ0KICApICU+JQ0KICANCiAgIyBBbm90YcOnw7VlcyBpbnN0aXR1Y2lvbmFpcyBkZSBjaWNsb3MgbWFjcm9lY29uw7RtaWNvcw0KICBoY19hbm5vdGF0aW9ucygNCiAgICBsaXN0KA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgbGlzdCgNCiAgICAgICAgICBwb2ludCA9IGxpc3QoeCA9IDYsIHkgPSAyMC44LCB4QXhpcyA9IDAsIHlBeGlzID0gMCksDQogICAgICAgICAgdGV4dCA9ICI8Yj5Cb29tIGRlIENvbW1vZGl0aWVzPC9iPjxicj5TdXBlcsOhdml0IGRlIHBvdXBhbsOnYSIsDQogICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikiLA0KICAgICAgICAgIGJvcmRlckNvbG9yID0gSUJfQU1BUkVMTywNCiAgICAgICAgICBib3JkZXJSYWRpdXMgPSA2LA0KICAgICAgICAgIGJvcmRlcldpZHRoID0gMSwNCiAgICAgICAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPKQ0KICAgICAgICApLA0KICAgICAgICBsaXN0KA0KICAgICAgICAgIHBvaW50ID0gbGlzdCh4ID0gMTMsIHkgPSAyMi4wLCB4QXhpcyA9IDAsIHlBeGlzID0gMCksDQogICAgICAgICAgdGV4dCA9ICI8Yj5QaWNvIGRvIEludmVzdGltZW50bzwvYj48YnI+RkJDRiBhdGluZ2UgMjAsOSUgZG8gUElCIiwNCiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSIsDQogICAgICAgICAgYm9yZGVyQ29sb3IgPSBJQl9BWlVMX0JBU0UsDQogICAgICAgICAgYm9yZGVyUmFkaXVzID0gNiwNCiAgICAgICAgICBib3JkZXJXaWR0aCA9IDEsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTykNCiAgICAgICAgKSwNCiAgICAgICAgbGlzdCgNCiAgICAgICAgICBwb2ludCA9IGxpc3QoeCA9IDI2LCB5ID0gMTcuNSwgeEF4aXMgPSAwLCB5QXhpcyA9IDApLA0KICAgICAgICAgIHRleHQgPSAiPGI+MjAyNiAoMcK6IFRyaSk8L2I+PGJyPkdhcCBkZSAxLDAgcC5wLiBkbyBQSUIiLA0KICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpIiwNCiAgICAgICAgICBib3JkZXJDb2xvciA9IElCX0FaVUxfTUVESU8sDQogICAgICAgICAgYm9yZGVyUmFkaXVzID0gNiwNCiAgICAgICAgICBib3JkZXJXaWR0aCA9IDEsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTykNCiAgICAgICAgKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiVGF4YSBkZSBQb3VwYW7Dp2EgZSBUYXhhIGRlIEludmVzdGltZW50byBubyBCcmFzaWwgKDIwMDDigJMyMDI2KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJNw6lkaWFzIGFudWFpcyBjb21vIHByb3BvcsOnw6NvIGRvIFBJQiBub21pbmFsIHwgKjIwMjYgcmVmZXJlLXNlIGFvIDHCuiB0cmltZXN0cmUgfCDDgXJlYSBzb21icmVhZGE6IGRlc2NvbXBhc3NvIChTIOKIkiBJKSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgYm9yZGVyQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBib3JkZXJSYWRpdXMgPSA2LA0KICAgIHZhbHVlRGVjaW1hbHMgPSAyLA0KICAgIHZhbHVlU3VmZml4ID0gIiUgZG8gUElCIg0KICApICU+JQ0KICANCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLA0KICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwNCiAgICBpdGVtU3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gIm5vcm1hbCIsIGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICANCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFIOKAlCBDb250YXMgTmFjaW9uYWlzIFRyaW1lc3RyYWlzIChUYWJlbGEgMjA3MikuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvIEJILiIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sIGZvbnRTaXplID0gIjEwcHgiKQ0KICApICU+JQ0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpDQoNCmdyYWZpY29fcG91cGFuY2FfaW52ZXN0aW1lbnRvX3RheGFzDQpgYGANCg0KQSBtZWRpZGEgcXVlIG8gZ292ZXJubyBuZWNlc3NpdGEgZGUgY2FwaXRhbCBlIHJlY3Vyc29zIHBhcmEgcXVpdGFyIGTDrXZpZGEgYnJ1dGEsIGEgcHJpbmNpcGFsIG1lZGlkYSBwYXJhIGN1bXByaXIgdGFsIG9iamV0aXZvIMOpIGEgZW1pc3PDo28gZGUgdMOtdHVsb3MgcMO6YmxpY29zLCBwcm9tZXNzYXMgZGUgcGFnYW1lbnRvcyBmdXR1cm9zIHBhcmEgbyBpbnZlc3RpZG9yIHF1ZSBwYWdhIGhvamUgZSBpcsOhIHJlY2ViZXIgbyBwcmluY2lwYWwgbWFpcyBvcyBqdXJvcyBubyBmdXR1cm8uIA0KDQpPIHByb2JsZW1hIHNlIGVuY29udHJhIHF1YW5kbyBvcyB0w610dWxvcyB2ZW5jZW0sIG8gZ292ZXJubyBicmFzaWxlaXJvIGRldmUgaG9ucmFyIG8gcGFnYW1lbnRvLCBwb3LDqW0gbsOjbyB0ZW5kbyBzdXBlcsOhdml0LCDDqSBuZWNlc3PDoXJpbyBlbWl0aXIgbm92b3MgdMOtdHVsb3MgcGFyYSBwYWdhciBvcyBhbnRpZ29zLCBhbGdvIHF1ZSDDqSBvIGNlbsOhcmlvIGRvIEJyYXNpbCBuYSBtYWlvciBwYXJ0ZSBkbyB0ZW1wby4gVGFsIGNlbsOhcmlvLCDDqSBhIGZhbW9zYSBSb2xhZ2VtIGRhIETDrXZpZGEsIGUgY29tIG9zIGp1cm9zIG5vbWluYWlzIGVtIHRvcm5vIGRlIDklIGFvIGFubywgc29icmUgdW1hIGTDrXZpZGEgZGUgcXVhc2UgODIlIGRvIFBJQiwgZmF6IGNvbSBxdWUgYSBkw612aWRhIGF1bWVudGUgc2VtIG5lbmh1bWEgZGVzcGVzYSBub3ZhLCBwb2lzIG8gUElCIGNyZXNjZSBhaW5kYSBxdWUgZW0gdW0gcml0bW8gbWVub3IgYSBtYWlzIG91IG1lbm9zIDItMyUsIG8gcXVlIGZheiBjb20gcXVlIGEgZMOtdmlkYSBjcmVzw6dhIDYtNyBwb250b3MgcGVyY2VudHVhaXMgYSBjYWRhIGFub3MuICooR3LDoWZpY28gMTQpKiANCg0KTyBkw6lmaWNpdCBww7pibGljbyBkbyBSR1BTIHNlIGVuY29udHJhIGVtIHVtYSBkZXNwZXNhIHByaW3DoXJpYSBhbHTDrXNzaW1hIHF1ZSBvIGdvdmVybm8gbsOjbyBjb25zZWd1ZSBxdWl0YXIsIGUgY29tbyBvIGTDqWZpY2l0IHByaW3DoXJpbyBzb21lIG5vIHNlcnZpw6dvIGRhIGTDrXZpZGEsIG5vIHZhbG9yIG1haXMgcmVjZW50ZSAoLTEwLDc4JSksIGluZGljYW5kbyBxdWUgb3MgMzQ5IGJpbGjDtWVzIHZpbmRvcyBkbyBkw6lmaWNpdCBwcmV2aWRlbmNpw6FyaW8gdmlyYW0gdMOtdHVsb3MgcMO6YmxpY29zIG5vdm9zLCBxdWUgZ2VyYW0ganVyb3MsIHF1ZSBnZXJhbSBtYWlzIHTDrXR1bG9zLCBxdWUgZ2VyYW0ganVyb3MuIA0KDQoqKihHcsOhZmljbyAxNCkqKg0KDQpgYGB7cn0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEdyw6FmaWNvOiBEaW7Dom1pY2EgRmlzY2FsIOKAlCBQcmltw6FyaW8sIEp1cm9zIE5vbWluYWlzIGUgRMOtdmlkYSBCcnV0YQ0KIyBJZGVudGlkYWRlIFZpc3VhbCBPZmljaWFsOiBQYWRyw6NvIEliTWFjcm8gQkggKE1hbnVhbCBkZSBNYXJjYSkNCiMgRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChCQ0IvU0dTKSDigJQgU8OpcmllcyA1Nzg0LCA1MzMxIGUgMTM3NjINCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgUHJldmVuw6fDo28gcGFyYSBjYW1pbmhvcyB0ZW1wb3LDoXJpb3Mgbm8gV2luZG93cyBjb20gYWNlbnR1YcOnw6NvDQpkaXIuY3JlYXRlKCJDOi9SdGVtcCIsIHNob3dXYXJuaW5ncyA9IEZBTFNFKQ0KU3lzLnNldGVudihUTVBESVIgPSAiQzovUnRlbXAiLCBUTVAgPSAiQzovUnRlbXAiLCBURU1QID0gIkM6L1J0ZW1wIikNCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIETDrXZpZGEgQnJ1dGEgKCUgUElCKSAvIERlc3RhcXVlcw0KSUJfQVpVTF9CQVNFICAgIDwtICIjMDIwMjNDIiAgIyBSZXN1bHRhZG8gUHJpbcOhcmlvIC8gVMOtdHVsb3MgLyBCYXNlIGluc3RpdHVjaW9uYWwNCklCX0JSQU5DTyAgICAgICA8LSAiI0ZGRkZGRiIgICMgRnVuZG8gaW5zdGl0dWNpb25hbA0KSUJfQVpVTF9NRURJTyAgIDwtICIjMDAyQzVFIiAgIyBKdXJvcyBOb21pbmFpcyBQYWdvcw0KSUJfQVpVTF9DTEFSTyAgIDwtICIjNkI4QkE0IiAgIyBEw6lmaWNpdCBOb21pbmFsIFRvdGFsIC8gQXBvaW8gZ3LDoWZpY28NCklCX0NJTlpBX0VTQ1VSTyA8LSAiIzNBM0EzQSIgICMgVGV4dG9zLCBlaXhvcyBlIHN1YnTDrXR1bG9zDQpJQl9DSU5aQV9DTEFSTyAgPC0gIiNBNkE2QTYiICAjIExpbmhhcyBkZSBncmFkZSwgZWl4b3MgZSBjcsOpZGl0b3MNCg0KIyDilIDilIAgMi4gRVhUUkHDh8ODTyBFIFRSQVRBTUVOVE8gRE9TIERBRE9TIChCQ0IgLyBTR1MpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KIyBTw6lyaWVzIEJDQiAoYWN1bXVsYWRhcyBlbSAxMiBtZXNlcyBjb21vICUgZG8gUElCKToNCiMg4oCiIDU3ODQgIC0+IFJlc3VsdGFkbyBQcmltw6FyaW8gKCUgZG8gUElCKQ0KIyDigKIgNTMzMSAgLT4gSnVyb3MgTm9taW5haXMgKCUgZG8gUElCKQ0KIyDigKIgMTM3NjIgLT4gRMOtdmlkYSBCcnV0YSBkbyBHb3Zlcm5vIEdlcmFsIC0gREJHRyAoJSBkbyBQSUIpDQoNCnNlcmllX3ByaW1hcmlvIDwtIHJiY2I6OmdldF9zZXJpZXMoNTc4NCwgIHN0YXJ0X2RhdGUgPSAiMjAwMy0wMS0wMSIpICU+JSByZW5hbWUocHJpbWFyaW8gPSAyKQ0Kc2VyaWVfanVyb3MgICAgPC0gcmJjYjo6Z2V0X3Nlcmllcyg1MzMxLCAgc3RhcnRfZGF0ZSA9ICIyMDAzLTAxLTAxIikgJT4lIHJlbmFtZShqdXJvcyAgICA9IDIpDQpzZXJpZV9kaXZpZGEgICA8LSByYmNiOjpnZXRfc2VyaWVzKDEzNzYyLCBzdGFydF9kYXRlID0gIjIwMDMtMDEtMDEiKSAlPiUgcmVuYW1lKGRpdmlkYSAgID0gMikNCg0KIyBDb25zb2xpZGHDp8OjbyBkYXMgc8OpcmllcyBwb3IgZGF0YQ0KZGZfZmlzY2FsIDwtIHNlcmllX3ByaW1hcmlvICU+JQ0KICBpbm5lcl9qb2luKHNlcmllX2p1cm9zLCAgYnkgPSAiZGF0ZSIpICU+JQ0KICBpbm5lcl9qb2luKHNlcmllX2RpdmlkYSwgYnkgPSAiZGF0ZSIpICU+JQ0KICAjIEFtb3N0cmFnZW0gc2VtZXN0cmFsIChqdW5obyBlIGRlemVtYnJvKSBwYXJhIG90aW1pemFyIGEgdmlzdWFsaXphw6fDo28gZGFzIGJhcnJhcw0KICBmaWx0ZXIoZm9ybWF0KGRhdGUsICIlbSIpICVpbiUgYygiMDYiLCAiMTIiKSkgJT4lDQogIG11dGF0ZSgNCiAgICBwZXJpb2RvX2xhYmVsID0gZm9ybWF0KGRhdGUsICIlYi8leSIpLA0KICAgIHJlc19wcmltYXJpbyAgPSByb3VuZChwcmltYXJpbywgMiksDQogICAganVyb3NfcGFnb3MgICA9IHJvdW5kKGp1cm9zLCAyKSwNCiAgICAjIETDqWZpY2l0IE5vbWluYWwgVG90YWwgPSBKdXJvcyAtIFByaW3DoXJpbyAobmVjZXNzaWRhZGUgZGUgZmluYW5jaWFtZW50bykNCiAgICBkZWZfbm9taW5hbCAgID0gcm91bmQoanVyb3NfcGFnb3MgLSByZXNfcHJpbWFyaW8sIDIpLA0KICAgIGRpdmlkYV9waWIgICAgPSByb3VuZChkaXZpZGEsIDEpDQogICkgJT4lDQogIGZpbHRlcighaXMubmEocmVzX3ByaW1hcmlvKSwgIWlzLm5hKGp1cm9zX3BhZ29zKSwgIWlzLm5hKGRpdmlkYV9waWIpKQ0KDQojIOKUgOKUgCAzLiBSRU5ERVJJWkHDh8ODTyBETyBHUsOBRklDTyAoRFVQTE8gRUlYTykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX2NpY2xvX2RpdmlkYSA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gSUJfQlJBTkNPLA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiKQ0KICApICU+JQ0KICANCiAgIyDilIDilIAgRWl4byBZMSAoRXNxdWVyZG8pOiBGbHV4b3MgRmlzY2FpcyAoJSBkbyBQSUIpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY195QXhpc19tdWx0aXBsZXMoDQogICAgbGlzdCgNCiAgICAgIHRpdGxlID0gbGlzdCgNCiAgICAgICAgdGV4dCA9ICJGbHV4byBBY3VtdWxhZG8gZW0gMTIgTWVzZXMgKCUgZG8gUElCKSIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgICApLA0KICAgICAgbWluID0gLTEwLA0KICAgICAgbWF4ID0gMTYsDQogICAgICB0aWNrSW50ZXJ2YWwgPSA0LA0KICAgICAgZ3JpZExpbmVDb2xvciA9ICIjRjBGMEYwIiwNCiAgICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgZm9ybWF0ID0gInt2YWx1ZTouMGZ9JSIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgICApLA0KICAgICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgICAgbGlzdCh2YWx1ZSA9IDAsIHdpZHRoID0gMS41LCBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgekluZGV4ID0gNCkNCiAgICAgICkNCiAgICApLA0KICAgICMg4pSA4pSAIEVpeG8gWTIgKERpcmVpdG8pOiBFc3RvcXVlIGRhIETDrXZpZGEgQnJ1dGEgKCUgZG8gUElCKSDilIDilIANCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KA0KICAgICAgICB0ZXh0ID0gIkTDrXZpZGEgQnJ1dGEgZG8gR292ZXJubyBHZXJhbCAoJSBkbyBQSUIpIiwNCiAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQU1BUkVMTywgZm9udFNpemUgPSAiMTFweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIpDQogICAgICApLA0KICAgICAgbWluID0gNDAsDQogICAgICBtYXggPSAxMDAsDQogICAgICB0aWNrSW50ZXJ2YWwgPSAxMCwNCiAgICAgIG9wcG9zaXRlID0gVFJVRSwNCiAgICAgIGdyaWRMaW5lV2lkdGggPSAwLA0KICAgICAgbGFiZWxzID0gbGlzdCgNCiAgICAgICAgZm9ybWF0ID0gInt2YWx1ZTouMGZ9JSIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgICApDQogICAgKQ0KICApICU+JQ0KICANCiAgIyDilIDilIAgU8OpcmllIDE6IFJlc3VsdGFkbyBQcmltw6FyaW8gKCsgU3VwZXLDoXZpdCAvIC0gRMOpZmljaXQpIOKUgOKUgOKUgA0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgPSAiUmVzdWx0YWRvIFByaW3DoXJpbyAoKyBTdXBlcsOhdml0IC8gLSBEw6lmaWNpdCkiLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICB5QXhpcyA9IDAsDQogICAgZGF0YSA9IGRmX2Zpc2NhbCRyZXNfcHJpbWFyaW8sDQogICAgY29sb3IgPSBJQl9BWlVMX0JBU0UsDQogICAgc3RhY2tpbmcgPSAibm9ybWFsIiwNCiAgICB6SW5kZXggPSAyDQogICkgJT4lDQogIA0KICAjIOKUgOKUgCBTw6lyaWUgMjogSnVyb3MgTm9taW5haXMgUGFnb3MgKEPDs2RpZ28gNTMzMSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJKdXJvcyBOb21pbmFpcyBQYWdvcyAoU2VydmnDp28gZGEgRMOtdmlkYSkiLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICB5QXhpcyA9IDAsDQogICAgZGF0YSA9IC1kZl9maXNjYWwkanVyb3NfcGFnb3MsDQogICAgY29sb3IgPSBJQl9BWlVMX01FRElPLA0KICAgIHN0YWNraW5nID0gIm5vcm1hbCIsDQogICAgekluZGV4ID0gMg0KICApICU+JQ0KICANCiAgIyDilIDilIAgU8OpcmllIDM6IETDqWZpY2l0IE5vbWluYWwgVG90YWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJEw6lmaWNpdCBOb21pbmFsIFRvdGFsICglIFBJQikiLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgeUF4aXMgPSAwLA0KICAgIGRhdGEgPSAtZGZfZmlzY2FsJGRlZl9ub21pbmFsLA0KICAgIGNvbG9yID0gSUJfQVpVTF9DTEFSTywNCiAgICBsaW5lV2lkdGggPSAyLjUsDQogICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgekluZGV4ID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzLCBzeW1ib2wgPSAic3F1YXJlIikNCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIFPDqXJpZSA0OiBEw612aWRhIEJydXRhIOKAlCBFaXhvIFNlY3VuZMOhcmlvIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY19hZGRfc2VyaWVzKA0KICAgIG5hbWUgPSAiRMOtdmlkYSBCcnV0YSBEQkdHICglIGRvIFBJQikgW0VpeG8gRGlyLl0iLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgeUF4aXMgPSAxLA0KICAgIGRhdGEgPSBkZl9maXNjYWwkZGl2aWRhX3BpYiwNCiAgICBjb2xvciA9IElCX0FNQVJFTE8sDQogICAgbGluZVdpZHRoID0gMy41LA0KICAgIHpJbmRleCA9IDQsDQogICAgbWFya2VyID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgcmFkaXVzID0gNCwNCiAgICAgIHN5bWJvbCA9ICJjaXJjbGUiLA0KICAgICAgZmlsbENvbG9yID0gSUJfQU1BUkVMTw0KICAgICkNCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIENvbmZpZ3VyYcOnw6NvIGRvIEVpeG8gWCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IGRmX2Zpc2NhbCRwZXJpb2RvX2xhYmVsLA0KICAgIGdyaWRMaW5lV2lkdGggPSAwLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIHRpY2tDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEwcHgiKSwNCiAgICAgIHJvdGF0aW9uID0gLTQ1DQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSB3aGljaChkZl9maXNjYWwkcGVyaW9kb19sYWJlbCA9PSAiZGV6LzE0IiksDQogICAgICAgIGNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sDQogICAgICAgIHdpZHRoID0gMS41LA0KICAgICAgICBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIiwNCiAgICAgICAgekluZGV4ID0gNSwNCiAgICAgICAgbGFiZWwgPSBsaXN0KA0KICAgICAgICAgIHRleHQgPSAiSW52ZXJzw6NvIEZpc2NhbCAoMjAxNCkiLA0KICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiOXB4IiksDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJ0b3AiLA0KICAgICAgICAgIHkgPSAxNQ0KICAgICAgICApDQogICAgICApDQogICAgKQ0KICApICU+JQ0KICANCiAgIyDilIDilIAgVMOtdHVsb3MgZSBTdWJ0w610dWxvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJPIENpY2xvIGRhIETDrXZpZGEgUMO6YmxpY2E6IFJlc3VsdGFkbyBQcmltw6FyaW8sIEp1cm9zIGUgRMOtdmlkYSBCcnV0YSAoMjAwM+KAkzIwMjYpIiwNCiAgICBhbGlnbiA9ICJsZWZ0IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGZvbnRTaXplID0gIjE4cHgiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkZsdXhvcyBmaXNjYWlzIGFjdW11bGFkb3MgZW0gMTIgbWVzZXMgKCUgUElCKSB2cy4gREJHRyB8IFPDqXJpZXMgQkNCIDU3ODQsIDUzMzEgZSAxMzc2MiIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIFRvb2x0aXAgQ29tcGFydGlsaGFkbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9IElCX0JSQU5DTywNCiAgICBib3JkZXJDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGJvcmRlclJhZGl1cyA9IDYsDQogICAgdmFsdWVEZWNpbWFscyA9IDIsDQogICAgdmFsdWVTdWZmaXggPSAiJSBkbyBQSUIiDQogICkgJT4lDQogIA0KICAjIOKUgOKUgCBMZWdlbmRhIGUgQ3LDqWRpdG9zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiLA0KICAgIGl0ZW1TdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9BWlVMX0JBU0UsIGZvbnRXZWlnaHQgPSAibm9ybWFsIiwgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyBTw6lyaWVzIDU3ODQsIDUzMzEgZSAxMzc2MikuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvIEJILiIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfQ0xBUk8sIGZvbnRTaXplID0gIjEwcHgiKQ0KICApICU+JQ0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpDQoNCmdyYWZpY29fY2ljbG9fZGl2aWRhDQpgYGANCg0KTm8gZmluYWwgZGUgYW7DoWxpc2UsIMOpIGludGVyZXNzYW50ZSBjb21lbnRhciBzb2JyZSBlc3NlIG1lc21vIGZlbsO0bWVubyBkZSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EgcXVlIG9jb3JyZSBlbSBvdXRybyBwYcOtcyBkZSBmb3JtYSBtdWl0byBzaW1pbGFyIHBvcsOpbSBjb20gdW0gcmVzdWx0YWRvIGZpbmFsIHF1ZSBkaWZlcmUgZGEgcmVhbGlkYWRlIGJyYXNpbGVpcmEuIE8gSmFww6NvIHBhc3NvdSBwb3IgdW1hIGRpbsOibWljYSBkZSBhdW1lbnRvIGRvIG7Dum1lcm8gZGUgaWRvc29zIGRlIHVtYSBmb3JtYSBhaW5kYSBtYWlzIHNldmVyYSBlIGltcGFjdGFudGUsIGhvamUgZW0gZGlhIG8gcGHDrXMgw6kgbyBsw61kZXIgbXVuZGlhbCBlbSBlbnZlbGhlY2ltZW50byBwb3B1bGFjaW9uYWwgdG90YWxpemFuZG8gY2VyY2EgZGUgMzYgbWlsaMO1ZXMgZGUgcGVzc29hcyBpZG9zYXMgbm8gcGHDrXMuIA0KDQpBIHBvcHVsYcOnw6NvIGRvIEphcMOjbyBlcmEgZGUgODYsNCBtaWxow7VlcyBkZSBoYWJpdGFudGVzIGVtIDE5NTAsIHNlbmRvIDMwLDQgbWlsaMO1ZXMgZGUgam92ZW5zIGRlIDAtMTQgYW5vcyAoMzUsMiUgZG8gdG90YWwpLCAxMyBtaWxow7VlcyBkZSBwZXNzb2FzIGRlIDUwKyAoMTUlIGRvIHRvdGFsKSwgNiw2IG1pbGjDtWVzIGRlIDYwKyAoNyw3JSBkbyB0b3RhbCkgZSAzODkgbWlsIGlkb3NvcyBkZSA4MCsgKDAsNSUgZG8gdG90YWwpLiBFc3RlcyBuw7ptZXJvcyBtdWRhcmFtIHN1YnN0YW5jaWFsbWVudGUgYXTDqSAyMDI0LCBhbm8gZW0gcXVlIGEgcG9wdWxhw6fDo28gdG90YWwgamFwb25lc2EgY2hlZ291IGEgMTIzLDggbWlsaMO1ZXMgZGUgaGFiaXRhbnRlcywgc2VuZG8gMTQsMiBtaWxow7VlcyBkZSBqb3ZlbnMgZGUgMC0xNCBhbm9zICgxMSw0JSksIDYyIG1pbGjDtWVzIGRlIHBlc3NvYXMgZGUgNTArICg1MCUpLCA0NCw1JSBkZSBpZG9zb3MgZGUgNjArICgzNSw5JSkgZSAxMywxIG1pbGjDtWVzIGRlIGlkb3NvcyBkZSA4MCsgKDEwLDYlKS4gUG9ydGFudG8sIGFzIHBlc3NvYXMgZGUgNTAgYW5vcyBlIG1haXMgZGUgaWRhZGUgasOhIHJlcHJlc2VudGFtIG1ldGFkZSBkYSBwb3B1bGHDp8OjbyBqYXBvbmVzYSBlIGEgcHJvcG9yw6fDo28gZGUgaWRvc29zIGRldmUgY29udGludWFyIGNyZXNjZW5kbyBhbyBsb25nbyBkbyBzw6ljdWxvIFhYSS4NCg0KRW50cmV0YW50bywgbyBwYcOtcyBhc2nDoXRpY28gbsOjbyBjb252aXZlIGNvbSBwcm9ibGVtYXMgcmVsYWNpb25hZGFzIGEgZMOtdmlkYSBjb20gZ3JhbmRlIGZyZXF1w6puY2lhIHNlbWVsaGFudGUgYW8gQnJhc2lsLiBBcGVzYXIgZG8gSmFww6NvIHRlciBlbnZlbGhlY2lkbyBhbnRlcyBxdWUgYSBwb3B1bGHDp8OjbyBicmFzaWxlaXJhIGUgYWN1bXVsb3UgdW1hIGVub3JtZSBkw612aWRhIGRlIHF1YXNlIDI1MCUgZG8gUElCLCBmb2kgcG9zc8OtdmVsIHVtYSBzdXN0ZW50YcOnw6NvIGRhIGTDrXZpZGEgZGV2aWRvIGFvIGp1cm8gcmVhbCBuZWdhdGl2byBvdSBwcmF0aWNhbWVudGUgemVybyBlIGNvbSB1bWEgYWx0YSBwb3B1cGFuw6dhIGRvbcOpc3RpY2EsIG8gcXVlIGFycmVmZWNldSBvcyB0w610dWxvcywgZmF6ZW5kbyBvIGN1c3RvIGRhIGTDrXZpZGEgc2VyIG3DrW5pbW8sIGp1c3RhbWVudGUgbyBjYW1pbmhvIGludmVyc28gZG8gQnJhc2lsLiAqKEdyw6FmaWNvIDE1KSoNCg0KKiooR3LDoWZpY28gMTUpKioNCg0KYGBge3J9DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBHcsOhZmljbzogVGF4YSBkZSBKdXJvcyBSZWFsIOKAlCBCcmFzaWwgdnMuIEphcMOjbyAoMjAwMOKAkzIwMjYpDQojIElkZW50aWRhZGUgVmlzdWFsIE9maWNpYWw6IFBhZHLDo28gSWJNYWNybyBCSCAoTWFudWFsIGRlIE1hcmNhKQ0KIyBGb250ZXM6IEJDQiAoU0dTKSwgQmFuayBvZiBKYXBhbiAoQm9KKSBlIEZSRUQgKFN0LiBMb3VpcyBGZWQpDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojIFByZXZlbsOnw6NvIHBhcmEgY2FtaW5ob3MgdGVtcG9yw6FyaW9zIG5vIFdpbmRvd3MgY29tIGFjZW50dWHDp8Ojbw0KZGlyLmNyZWF0ZSgiQzovUnRlbXAiLCBzaG93V2FybmluZ3MgPSBGQUxTRSkNClN5cy5zZXRlbnYoVE1QRElSID0gIkM6L1J0ZW1wIiwgVE1QID0gIkM6L1J0ZW1wIiwgVEVNUCA9ICJDOi9SdGVtcCIpDQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KEdldEJDQkRhdGEpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQojIOKUgOKUgCAxLiBERUZJTknDh8ODTyBEQSBQQUxFVEEgSU5TVElUVUNJT05BTCAoR1VJQSBERSBNQVJDQSkg4pSA4pSA4pSA4pSA4pSA4pSADQpJQl9BTUFSRUxPICAgICAgPC0gIiNGRkI4MUYiICAjIEphcMOjbyAoSnVyb3MgUmVhaXMpIC8gRGVzdGFxdWVzDQpJQl9BWlVMX0JBU0UgICAgPC0gIiMwMjAyM0MiICAjIEJyYXNpbCAoSnVyb3MgUmVhaXMpIC8gVMOtdHVsb3MgLyBCYXNlDQpJQl9CUkFOQ08gICAgICAgPC0gIiNGRkZGRkYiICAjIEZ1bmRvIGluc3RpdHVjaW9uYWwNCklCX0FaVUxfTUVESU8gICA8LSAiIzAwMkM1RSIgICMgQXBvaW8gZ3LDoWZpY28gaW5zdGl0dWNpb25hbA0KSUJfQVpVTF9DTEFSTyAgIDwtICIjNkI4QkE0IiAgIyBEaWZlcmVuY2lhbCBkZSBKdXJvcyAvIFNwcmVhZCAow4FyZWEgU29tYnJlYWRhKQ0KSUJfQ0lOWkFfRVNDVVJPIDwtICIjM0EzQTNBIiAgIyBUZXh0b3MsIGVpeG9zIGUgc3VidMOtdHVsb3MNCklCX0NJTlpBX0NMQVJPICA8LSAiI0E2QTZBNiIgICMgTGluaGFzIGRlIGdyYWRlLCBlaXhvcyBlIGNyw6lkaXRvcw0KDQojIOKUgOKUgCAyLiBCQVNFIERFIERBRE9TOiBCUkFTSUwgKFNFTElDICYgSVBDQSBWSUEgQkNCKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCnNlbGljX3JhdyA8LSBnYmNiZF9nZXRfc2VyaWVzKGlkID0gNDE4OSwgIGZpcnN0LmRhdGUgPSBhcy5EYXRlKCIyMDAwLTAxLTAxIiksIGxhc3QuZGF0ZSA9IFN5cy5EYXRlKCkpDQppcGNhX3JhdyAgPC0gZ2JjYmRfZ2V0X3NlcmllcyhpZCA9IDEzNTIyLCBmaXJzdC5kYXRlID0gYXMuRGF0ZSgiMjAwMC0wMS0wMSIpLCBsYXN0LmRhdGUgPSBTeXMuRGF0ZSgpKQ0KDQpzZWxpY19tIDwtIHNlbGljX3JhdyAlPiUNCiAgbXV0YXRlKGFub19tZXMgPSBmbG9vcl9kYXRlKHJlZi5kYXRlLCAibW9udGgiKSkgJT4lDQogIGdyb3VwX2J5KGFub19tZXMpICU+JQ0KICBzdW1tYXJpc2Uoc2VsaWMgPSBtZWFuKHZhbHVlLCBuYS5ybSA9IFRSVUUpLCAuZ3JvdXBzID0gImRyb3AiKQ0KDQppcGNhX20gPC0gaXBjYV9yYXcgJT4lDQogIG11dGF0ZShhbm9fbWVzID0gZmxvb3JfZGF0ZShyZWYuZGF0ZSwgIm1vbnRoIikpICU+JQ0KICBzZWxlY3QoYW5vX21lcywgaXBjYSA9IHZhbHVlKQ0KDQpiciA8LSBzZWxpY19tICU+JQ0KICBpbm5lcl9qb2luKGlwY2FfbSwgYnkgPSAiYW5vX21lcyIpICU+JQ0KICBtdXRhdGUoDQogICAgcmVhbF9yYXRlID0gKCgxICsgc2VsaWMgLyAxMDApIC8gKDEgKyBpcGNhIC8gMTAwKSAtIDEpICogMTAwLA0KICAgIHllYXIgICAgICA9IHllYXIoYW5vX21lcykNCiAgKSAlPiUNCiAgZmlsdGVyKHllYXIgPj0gMjAwMCwgeWVhciA8PSAyMDI2KSAlPiUNCiAgZ3JvdXBfYnkoeWVhcikgJT4lDQogIHN1bW1hcmlzZShicmF6aWxfcmVhbCA9IHJvdW5kKG1lYW4ocmVhbF9yYXRlLCBuYS5ybSA9IFRSVUUpLCAyKSwgLmdyb3VwcyA9ICJkcm9wIikNCg0KIyDilIDilIAgMy4gQkFTRSBERSBEQURPUzogSkFQw4NPIChUQVhBIE5PTUlOQUwgQm9KICsgQ1BJIEZSRUQpIOKUgOKUgOKUgOKUgOKUgA0KanBfcmF0ZV9yYXcgPC0gcmVhZC5jc3YoDQogICJDOi9Vc2Vycy9Kb8OjbyBQZWRyby9Eb3dubG9hZHMvZm0wMl9tXzFfZW4uY3N2IiwNCiAgc2tpcCA9IDksIGhlYWRlciA9IEZBTFNFLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UNCikNCmNvbG5hbWVzKGpwX3JhdGVfcmF3KSA8LSBjKCJkYXRlX3N0ciIsICJlbmRfb2ZfbW9udGgiLCAiYXZlcmFnZSIpDQoNCmpwX3JhdGUgPC0ganBfcmF0ZV9yYXcgJT4lDQogIG11dGF0ZSgNCiAgICBkYXRlICA9IGFzLkRhdGUocGFzdGUwKGRhdGVfc3RyLCAiLzAxIiksIGZvcm1hdCA9ICIlWS8lbS8lZCIpLA0KICAgIHZhbHVlID0gc3VwcHJlc3NXYXJuaW5ncyhhcy5udW1lcmljKGF2ZXJhZ2UpKQ0KICApICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGRhdGUpLCAhaXMubmEodmFsdWUpKSAlPiUNCiAgc2VsZWN0KGRhdGUsIHZhbHVlKQ0KDQp1bHRpbW9fY3N2IDwtIG1heChqcF9yYXRlJGRhdGUpDQppZiAodWx0aW1vX2NzdiA8IGFzLkRhdGUoIjIwMjYtMDgtMDEiKSkgew0KICBkYXRhc19zdXAgPC0gc2VxKGZsb29yX2RhdGUodWx0aW1vX2NzdiAlbSslIG1vbnRocygxKSwgIm1vbnRoIiksDQogICAgICAgICAgICAgICAgICAgYXMuRGF0ZSgiMjAyNi0xMi0wMSIpLCBieSA9ICJtb250aCIpDQogIHRheGFzX3N1cCA8LSBjYXNlX3doZW4oDQogICAgZGF0YXNfc3VwIDwgYXMuRGF0ZSgiMjAyNC0wMy0wMSIpIH4gMC4wMCwNCiAgICBkYXRhc19zdXAgPCBhcy5EYXRlKCIyMDI0LTA3LTAxIikgfiAwLjEwLA0KICAgIGRhdGFzX3N1cCA8IGFzLkRhdGUoIjIwMjUtMDEtMDEiKSB+IDAuMjUsDQogICAgZGF0YXNfc3VwIDwgYXMuRGF0ZSgiMjAyNi0wMS0wMSIpIH4gMC41MCwNCiAgICBkYXRhc19zdXAgPCBhcy5EYXRlKCIyMDI2LTA3LTAxIikgfiAwLjc1LA0KICAgIFRSVUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+IDEuMDANCiAgKQ0KICBqcF9yYXRlIDwtIGJpbmRfcm93cyhqcF9yYXRlLCB0aWJibGUoZGF0ZSA9IGRhdGFzX3N1cCwgdmFsdWUgPSB0YXhhc19zdXApKQ0KfQ0KDQpqcF9jcGlfcmF3IDwtIHJlYWQuY3N2KA0KICAiaHR0cHM6Ly9mcmVkLnN0bG91aXNmZWQub3JnL2dyYXBoL2ZyZWRncmFwaC5jc3Y/aWQ9SlBOQ1BJQUxMTUlOTUVJIiwNCiAgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFDQopDQpjb2xuYW1lcyhqcF9jcGlfcmF3KSA8LSBjKCJkYXRlIiwgInZhbHVlIikNCmpwX2NwaV9yYXckZGF0ZSAgPC0gYXMuRGF0ZShqcF9jcGlfcmF3JGRhdGUpDQpqcF9jcGlfcmF3JHZhbHVlIDwtIHN1cHByZXNzV2FybmluZ3MoYXMubnVtZXJpYyhqcF9jcGlfcmF3JHZhbHVlKSkNCg0KanBfY3BpIDwtIGpwX2NwaV9yYXcgJT4lDQogIGZpbHRlcighaXMubmEodmFsdWUpKSAlPiUNCiAgYXJyYW5nZShkYXRlKSAlPiUNCiAgbXV0YXRlKGNwaV95b3kgPSAodmFsdWUgLyBsYWcodmFsdWUsIDEyKSAtIDEpICogMTAwKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShjcGlfeW95KSkNCg0KY3BpX2FudWFsX3N1cCA8LSB0aWJibGUoDQogIHllYXIgICAgPSBjKDIwMjMsIDIwMjQsIDIwMjUsIDIwMjYpLA0KICBjcGlfeW95ID0gYygzLjI3LCAyLjUwLCAyLjQwLCAyLjIwKQ0KKQ0KDQpqcF9tZW5zYWwgPC0ganBfcmF0ZSAlPiUNCiAgaW5uZXJfam9pbihqcF9jcGkgJT4lIHNlbGVjdChkYXRlLCBjcGlfeW95KSwgYnkgPSAiZGF0ZSIpICU+JQ0KICBtdXRhdGUoDQogICAgcmVhbF9yYXRlID0gKCgxICsgdmFsdWUgLyAxMDApIC8gKDEgKyBjcGlfeW95IC8gMTAwKSAtIDEpICogMTAwLA0KICAgIHllYXIgICAgICA9IHllYXIoZGF0ZSkNCiAgKSAlPiUNCiAgZmlsdGVyKHllYXIgPj0gMjAwMCwgeWVhciA8PSAyMDI2KSAlPiUNCiAgZ3JvdXBfYnkoeWVhcikgJT4lDQogIHN1bW1hcmlzZShqYXBhbl9yZWFsID0gcm91bmQobWVhbihyZWFsX3JhdGUsIG5hLnJtID0gVFJVRSksIDIpLCAuZ3JvdXBzID0gImRyb3AiKQ0KDQphbm9zX2ZhbHRhbnRlcyA8LSBjcGlfYW51YWxfc3VwICU+JQ0KICBmaWx0ZXIoISh5ZWFyICVpbiUganBfbWVuc2FsJHllYXIpKSAlPiUNCiAgbGVmdF9qb2luKA0KICAgIGpwX3JhdGUgJT4lDQogICAgICBtdXRhdGUoeWVhciA9IHllYXIoZGF0ZSkpICU+JQ0KICAgICAgZ3JvdXBfYnkoeWVhcikgJT4lDQogICAgICBzdW1tYXJpc2Uobm9taW5hbCA9IG1lYW4odmFsdWUsIG5hLnJtID0gVFJVRSksIC5ncm91cHMgPSAiZHJvcCIpLA0KICAgIGJ5ID0gInllYXIiDQogICkgJT4lDQogIG11dGF0ZShqYXBhbl9yZWFsID0gcm91bmQoKCgxICsgbm9taW5hbCAvIDEwMCkgLyAoMSArIGNwaV95b3kgLyAxMDApIC0gMSkgKiAxMDAsIDIpKSAlPiUNCiAgc2VsZWN0KHllYXIsIGphcGFuX3JlYWwpDQoNCmpwIDwtIGJpbmRfcm93cyhqcF9tZW5zYWwsIGFub3NfZmFsdGFudGVzKSAlPiUgYXJyYW5nZSh5ZWFyKQ0KDQojIOKUgOKUgCA0LiBDT05TT0xJREHDh8ODTyBETyBEQVRBU0VUIE1BQ1JPRUNPTsOUTUlDTyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCmRmX2p1cm9zX3JlYWwgPC0gYnIgJT4lDQogIGlubmVyX2pvaW4oanAsIGJ5ID0gInllYXIiKSAlPiUNCiAgbXV0YXRlKA0KICAgIGFub19zdHIgICA9IGFzLmNoYXJhY3Rlcih5ZWFyKSwNCiAgICBzcHJlYWRfYnJfanAgPSByb3VuZChicmF6aWxfcmVhbCAtIGphcGFuX3JlYWwsIDIpLA0KICAgIGxvd19iYW5kICA9IHBtaW4oYnJhemlsX3JlYWwsIGphcGFuX3JlYWwpLA0KICAgIGhpZ2hfYmFuZCA9IHBtYXgoYnJhemlsX3JlYWwsIGphcGFuX3JlYWwpDQogICkNCg0KIyDilIDilIAgNS4gUkVOREVSSVpBw4fDg08gRE8gR1LDgUZJQ08gSElHSENIQVJURVIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpncmFmaWNvX2p1cm9fcmVhbF9icl9qcCA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiIpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgbGluZVdpZHRoID0gMywNCiAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQpDQogICAgKQ0KICApICU+JQ0KICANCiAgIyDilIDilIAgw4FyZWEgU29tYnJlYWRhOiBEaWZlcmVuY2lhbCBkZSBKdXJvcyBSZWFpcyAoU3ByZWFkKSDilIDilIDilIDilIDilIDilIANCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkRpZmVyZW5jaWFsIGRlIEp1cm9zIFJlYWlzIChTcHJlYWQgQlIg4oiSIEpQKSIsDQogICAgdHlwZSA9ICJhcmVhcmFuZ2UiLA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkZl9qdXJvc19yZWFsICU+JSB0cmFuc211dGUoYW5vX3N0ciwgbG93X2JhbmQsIGhpZ2hfYmFuZCkpLA0KICAgIGNvbG9yID0gSUJfQVpVTF9DTEFSTywNCiAgICBmaWxsT3BhY2l0eSA9IDAuMjAsDQogICAgbGluZVdpZHRoID0gMCwNCiAgICB6SW5kZXggPSAwLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCgNCiAgICAgIHBvaW50Rm9ybWF0ID0gIjxzcGFuIHN0eWxlPSdjb2xvcjojNkI4QkE0Jz7il488L3NwYW4+IFNwcmVhZCBSZWFsOiA8Yj57cG9pbnQuZ2FwOi4yZn0gcC5wLjwvYj48YnIvPiINCiAgICApDQogICkgJT4lDQogIA0KICAjIOKUgOKUgCBTw6lyaWUgMTogVGF4YSBkZSBKdXJvcyBSZWFsIEJyYXNpbCAoQXp1bCBJYk1hY3JvKSDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkJyYXNpbCAoU2VsaWMg4oiSIElQQ0EpIiwNCiAgICBkYXRhID0gZGZfanVyb3NfcmVhbCRicmF6aWxfcmVhbCwNCiAgICBjb2xvciA9IElCX0FaVUxfQkFTRSwNCiAgICB6SW5kZXggPSAyLA0KICAgIG1hcmtlciA9IGxpc3Qoc3ltYm9sID0gImNpcmNsZSIpDQogICkgJT4lDQogIA0KICAjIOKUgOKUgCBTw6lyaWUgMjogVGF4YSBkZSBKdXJvcyBSZWFsIEphcMOjbyAoQW1hcmVsbyBJYk1hY3JvKSDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkphcMOjbyAoT3Zlcm5pZ2h0IENhbGwgUmF0ZSDiiJIgQ1BJKSIsDQogICAgZGF0YSA9IGRmX2p1cm9zX3JlYWwkamFwYW5fcmVhbCwNCiAgICBjb2xvciA9IElCX0FNQVJFTE8sDQogICAgekluZGV4ID0gMiwNCiAgICBtYXJrZXIgPSBsaXN0KHN5bWJvbCA9ICJkaWFtb25kIikNCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIENvbmZpZ3VyYcOnw6NvIGRvIEVpeG8gWCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IGRmX2p1cm9zX3JlYWwkYW5vX3N0ciwNCiAgICBncmlkTGluZVdpZHRoID0gMSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIHRpY2tDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjEwcHgiKSwNCiAgICAgIHJvdGF0aW9uID0gLTQ1DQogICAgKQ0KICApICU+JQ0KICANCiAgIyDilIDilIAgQ29uZmlndXJhw6fDo28gZG8gRWl4byBZIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIlRheGEgZGUgSnVyb3MgUmVhbCAoJSBhLmEuKSIsDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBJQl9DSU5aQV9FU0NVUk8sIGZvbnRTaXplID0gIjExcHgiKQ0KICAgICksDQogICAgbWluID0gLTYsDQogICAgbWF4ID0gMTYsDQogICAgdGlja0ludGVydmFsID0gMiwNCiAgICBncmlkTGluZUNvbG9yID0gIiNGMEYwRjAiLA0KICAgIGxpbmVDb2xvciA9IElCX0NJTlpBX0NMQVJPLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlOi4wZn0lIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiMTFweCIpDQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSAwLA0KICAgICAgICBjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywNCiAgICAgICAgd2lkdGggPSAxLjUsDQogICAgICAgIGRhc2hTdHlsZSA9ICJTaG9ydERhc2giLA0KICAgICAgICB6SW5kZXggPSAzLA0KICAgICAgICBsYWJlbCA9IGxpc3QoDQogICAgICAgICAgdGV4dCA9ICJKdXJvIFJlYWwgTmV1dHJvICgwJSkiLA0KICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0VTQ1VSTywgZm9udFNpemUgPSAiOXB4IiksDQogICAgICAgICAgYWxpZ24gPSAicmlnaHQiLA0KICAgICAgICAgIHggPSAtMTAsDQogICAgICAgICAgeSA9IC00DQogICAgICAgICkNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIA0KICAjIOKUgOKUgCBUw610dWxvcyBlIFN1YnTDrXR1bG9zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlRheGEgZGUgSnVyb3MgUmVhbDogQnJhc2lsIHZzLiBKYXDDo28gKDIwMDDigJMyMDI2KSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQVpVTF9CQVNFLCBmb250V2VpZ2h0ID0gImJvbGQiLCBmb250U2l6ZSA9ICIxOHB4IikNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJNw6lkaWFzIGFudWFpcyB8IEJyYXNpbDogU2VsaWMgZGVzaW5mbGFjaW9uYWRhIHBlbG8gSVBDQSAoQkNCKSB8IEphcMOjbzogVGF4YSBkZSBDYWxsIE92ZXJuaWdodCBkZXNpbmZsYWNpb25hZGEgcGVsbyBDUEkgKEJvSi9GUkVEKSIsDQogICAgYWxpZ24gPSAibGVmdCIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gSUJfQ0lOWkFfRVNDVVJPLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIFRvb2x0aXAgQ29tcGFydGlsaGFkbyBubyBQYWRyw6NvIEliTWFjcm8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSBJQl9CUkFOQ08sDQogICAgYm9yZGVyQ29sb3IgPSBJQl9DSU5aQV9DTEFSTywNCiAgICBib3JkZXJSYWRpdXMgPSA2LA0KICAgIGhlYWRlckZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjEycHgnPjxiPkFubyB7cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4iLA0KICAgIHZhbHVlRGVjaW1hbHMgPSAyLA0KICAgIHZhbHVlU3VmZml4ID0gIiUgYS5hLiINCiAgKSAlPiUNCiAgDQogICMg4pSA4pSAIExlZ2VuZGEgZSBDcsOpZGl0b3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsDQogICAgaXRlbVN0eWxlID0gbGlzdChjb2xvciA9IElCX0FaVUxfQkFTRSwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCAoQkNCKSwgQmFuayBvZiBKYXBhbiAoQm9KKSBlIEZSRUQgKFN0LiBMb3VpcyBGZWQpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNybyBCSC4iLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IElCX0NJTlpBX0NMQVJPLCBmb250U2l6ZSA9ICIxMHB4IikNCiAgKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKQ0KDQojIOKUgOKUgCA2LiBFWElCScOHw4NPIERPIEdSw4FGSUNPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZ3JhZmljb19qdXJvX3JlYWxfYnJfanANCmBgYA0KIyAqNzogQ29uY2x1c8OjbyoNCg0KTyBlbnZlbGhlY2ltZW50byBwb3B1bGFjaW9uYWwgZG8gQnJhc2lsIMOpIHVtYSByZWFsaWRhZGUgcXVlIGrDoSBzZSBtYW5pZmVzdGEgZW0gdG9kYXMgYXMgZGltZW5zw7VlcyBkbyBwYcOtcyDigJQgc29jaWFpcywgZWNvbsO0bWljYXMsIGRlIHNhw7pkZSwgZGUgc2VndXJhbsOnYSBlIGRpdmVyc2FzIG91dHJhcy4gTWFpcyBkbyBxdWUgdW0gZGFkbyBlc3RhdMOtc3RpY28sIHRyYXRhLXNlIGRlIHVtYSB0cmFuc2Zvcm1hw6fDo28gZXN0cnV0dXJhbCBjdWpvcyBlZmVpdG9zIGFiYWxhbSBhcyBiYXNlcyBkZSB1bWEgbmHDp8OjbyBkYSBjb21wbGV4aWRhZGUgZG8gQnJhc2lsLCBlIHF1ZSBzZSBhcHJvZnVuZGFyw6EgbmFzIHByw7N4aW1hcyBkw6ljYWRhcyBpbmRlcGVuZGVudGVtZW50ZSBkZSBxdWFscXVlciBkZWNpc8OjbyBkZSBwb2zDrXRpY2EgZWNvbsO0bWljYSB0b21hZGEgaG9qZS4gTmVzc2Ugc2VudGlkbywgY29tcHJlZW5kZXIgcXVlIGV4aXN0ZSB1bWEgY2FkZWlhIGRlIGV2ZW50b3MgcXVlIHBhcnRlIGRvIGVudmVsaGVjaW1lbnRvIHBvcHVsYWNpb25hbCwgYXRyYXZlc3NhIGEgZGVtb2dyYWZpYSwgYSBwcm9kdXRpdmlkYWRlIGUgbyBwcm9kdXRvLCBlIHNlIGNvbmNyZXRpemEgbm8gZmlzY2FsIOKAlCDDqSBvIHBhc3NvIGVzc2VuY2lhbCBwYXJhIHF1ZSBxdWFscXVlciBjYW1pbmhvIGRlIHNvbHXDp8OjbyBzZWphIHRyYcOnYWRvIGNvbSBjb25zaXN0w6puY2lhLiBJZ25vcmFyIHVtIGVsbyBkZXNzYSBjYWRlaWEgw6kgdHJhdGFyIG8gc2ludG9tYSBzZW0gZW5kZXJlw6dhciBhIGNhdXNhLiBDb20gZXNzZSBvYmpldGl2bywgZXN0ZSByZWxhdMOzcmlvIGJ1c2NvdSB0cmF6ZXIgZXNzYSBkaXNjdXNzw6NvIHBhcmEgYWzDqW0gZG9zIGdhYmluZXRlcyBlIGRhcyBhdXRvcmlkYWRlcyBlY29uw7RtaWNhcy4gQSB0cmFuc2nDp8OjbyBkZW1vZ3LDoWZpY2EgYWNlbGVyYWRhIGRvIEJyYXNpbCBuw6NvIMOpIHVtIHRlbWEgcmVzdHJpdG8gYSBlc3BlY2lhbGlzdGFzIOKAlCBlbGEgYWZldGEgZGlyZXRhbWVudGUgbyBjb23DqXJjaW8sIGEgcG91cGFuw6dhLCBvIGludmVzdGltZW50bywgb3MganVyb3MsIG8gc2Fsw6FyaW8gZSB0YW50b3Mgb3V0cm9zIGZhdG9yZXMgcXVlIGNvbXDDtWVtIGEgZWNvbm9taWEgZG8gY290aWRpYW5vIGRlIGNhZGEgYnJhc2lsZWlyby4gRW50ZW5kw6otbGEgw6ksIHBvcnRhbnRvLCBvIHByaW1laXJvIHBhc3NvIHBhcmEgZW5mcmVudMOhLWxhLg0KDQpGb250ZXM6IA0KDQpodHRwczovL2VkdWNhLmliZ2UuZ292LmJyL2pvdmVucy9jb25oZWNhLW8tYnJhc2lsL3BvcHVsYWNhby8xODMxOC1waXJhbWlkZS1ldGFyaWEuaHRtbA0KDQpodHRwczovL3d3dy5jbm5icmFzaWwuY29tLmJyL25hY2lvbmFsL2JyYXNpbC9wb3B1bGFjYW8tam92ZW0tY2FpLWUtbnVtZQ0Kcm8tZGUtaWRvc29zLWF1bWVudGEtbm8tYnJhc2lsLWFwb250YS1pYmdlLyNnb29nX3Jld2FyZGVkDQoNCmh0dHBzOi8vYmlibGlvdGVjYS5pYmdlLmdvdi5ici9pbmRleC5waHAvYmlibGlvdGVjYS1jYXRhbG9nbz92aWV3PWRldGFsaGVzJmlkPTc3Mg0KDQpodHRwczovL3N0cm9uZy5jb20uYnIvZ2xvc3NhcmlvL3Bvci1xdWUtby1lbnZlbGhlY2ltZW50by1wb3B1bGFjaW9uYWwtaW1wYWN0YS1vLW1lcmNhZG8vDQoNCmh0dHBzOi8vYmxvZ2RvZGVzZW52b2x2aW1lbnRvLmJuZGVzLmdvdi5ici9jYXRlZ29yaWEvZWNvbm9taWEtZS1kZXNlbnZvbHZpbWVudG8vRW52ZWxoZWNpbWVudG8tZS10cmFuc2ljYW8tZGVtb2dyYWZpY2EvDQoNCmh0dHBzOi8vd3d3Lndvcmxkb21ldGVycy5pbmZvL3B0L2RlbW9ncmFmaWEvYnJhc2lsLWRlbW9ncmFmaWEvDQoNCmh0dHBzOi8vYXNzaXN0YW50cy5jb20uYnIvYS10YXhhLWRlLW5hdGFsaWRhZGUtYnJhc2lsZWlyYS12ZW0tY2FpbmRvLw0KDQpodHRwczovL3d3dy5jbm5icmFzaWwuY29tLmJyL25hY2lvbmFsL2JyYXNpbC9icmFzaWwtcmVnaXN0cmEtbWVub3ItbnVtZXJvLWRlLW5hc2NpbWVudG9zLWVtLXF1YXNlLTUwLWFub3MtZGl6LWliZ2UvDQoNCmh0dHBzOi8vd3d3LmNvbmdyZXNzb2VtZm9jby5jb20uYnIvbm90aWNpYS8xMDc3OTYvaWZpLW9yY2FtZW50by1zdWJlc3RpbW91LWdhc3RvLWRlLWJwYy1wcmV2aWRlbmNpYS1lLWJvbHNhLWZhbWlsaWENCg0KaHR0cHM6Ly93d3cuY25uYnJhc2lsLmNvbS5ici9lY29ub21pYS9tb25leS9tYWNyb2Vjb25vbWlhL2lmaS1vcmNhbWVudG8tc3ViZXN0aW1hLWRlc3Blc2FzLWNvbS1wcmV2aWRlbmNpYS1icGMtZS1ib2xzYS1mYW1pbGlhLw0KDQpodHRwczovL29mYXRvci5jb20uYnIvaW5mb3JtYWNhby9nYXN0by1jb20tcHJldmlkZW5jaWEtY29udGludWEtc3ViaW5kby1hY2ltYS1kYS1pbmZsYWNhby1tb3N0cmEtaWZpLw0KDQpodHRwczovL3d3dy5nb3YuYnIvcHJldmlkZW5jaWEvcHQtYnIvYXNzdW50b3MvcHJldmlkZW5jaWEtc29jaWFsL0RhZG9zLWVzdGF0aXN0aWNvcy1wcmV2aWRlbmNpYS1zb2NpYWwtZS1pbnNzL2JvbGV0aW5zLWRhLXByZXZpZGVuY2lhLXNvY2lhbA0KDQpodHRwczovL3NpZHJhLmliZ2UuZ292LmJyL1RhYmVsYS82NzI3DQoNCmh0dHBzOi8vc2lkcmEuaWJnZS5nb3YuYnIvVGFiZWxhLzY3MjcNCg0KaHR0cHM6Ly90cmFkaW5nZWNvbm9taWNzLmNvbS9qYXBhbi9pbnRlcmVzdC1yYXRlDQoNCmh0dHBzOi8vd3d3LnN0YXQtc2VhcmNoLmJvai5vci5qcC9zc2kvbXRzaHRtbC9mbTAyX21fMV9lbi5odG1sDQoNCmh0dHBzOi8vd3d3LnBvZGVyMzYwLmNvbS5ici9wb2Rlci1pbnRlcm5hY2lvbmFsL3BvcHVsYWNhby1kby1qYXBhby1jYWktZS1udW1lcm8tZGUtaWRvc29zLWF0aW5nZS1yZWNvcmRlLw0K