Análise das Expectativas de Câmbio e Impactos nas Decisões da
Selic
Este relatório tem como objetivo analisar como as expectativas de
câmbio influenciam as decisões de política monetária do Banco Central do
Brasil (Bacen), especialmente em relação à taxa Selic. A variação do
dólar impacta diretamente a inflação, o fluxo de capitais, o
endividamento público e o comportamento dos investidores, fatores
essenciais para as decisões do Copom. Serão abordados os principais
elementos que conectam o câmbio à política monetária, fluxos de capital,
dívida pública, CDS e preços das commodities, destacando como suas
oscilações afetam o controle inflacionário e o crescimento
econômico.
Selic e Câmbio
As projeções para o câmbio são fundamentais para compreender a
dinâmica entre o dólar e as decisões do Comitê de Política Monetária
(Copom). O dólar funciona como um termômetro global de liquidez e risco,
influenciando fluxos de capitais, comércio internacional e preços
domésticos. Sua valorização ou depreciação repercute diretamente no
IPCA, nos custos de importações e insumos industriais e, portanto, nas
decisões de política monetária.
Entre 2018 e 2022, essa relação ficou particularmente evidente. Nesse
período, o dólar subiu de aproximadamente R$ 3,40 para R$ 5,16 — uma
depreciação de cerca de 52% do real — enquanto a Selic caiu de 6,50% ao
ano (2018) para o piso histórico de 2,00% em 2020, antes de voltar a
subir fortemente para 13,75% em 2022. Essa sequência ilustra os dois
vetores de causalidade entre câmbio e juros.
Quando o dólar sobe, o real se desvaloriza. A desvalorização cambial
encarece importados, combustíveis e matérias-primas, pressionando a
inflação via repasse cambial. Diante desse cenário, o Banco Central
tende a elevar a Selic para conter expectativas inflacionárias e atrair
fluxos externos, fortalecendo o real. Foi exatamente o que ocorreu entre
2021 e 2022: com o dólar ainda acima de R$ 5, o Banco central iniciou um
ciclo de alta de 1.175 pontos-base na Selic, revertendo o movimento
anterior de queda.
Quando o câmbio cai, o real se valoriza. Em momentos de valorização
do real, o efeito é o oposto. Produtos importados ficam mais baratos, a
inflação tende a ceder, e o Banco Central ganha espaço para reduzir a
Selic. Entre 2018 e meados de 2019, por exemplo, o câmbio permaneceu
relativamente estável, e a inflação abaixo da meta permitiu cortes
graduais na taxa básica de 6,50% para 5,00%, sinalizando um ambiente de
alívio cambial e monetário.
Esses movimentos reforçam a importância de o Banco Central acompanhar
de perto as projeções para o câmbio e o diferencial de juros entre
Brasil e Estados Unidos. Quando o dólar se valoriza e pressiona a
inflação por meio do encarecimento de importados, o Banco Central tende
a adotar uma política monetária mais cautelosa, evitando cortes
prematuros da Selic e priorizando a estabilidade de preços. Por outro
lado, quando o real se fortalece e o risco externo diminui, há maior
espaço para flexibilização da taxa de juros, já que a valorização
cambial contribui para conter a inflação e reduzir o custo de
importação.
Assim, a interação entre Selic e câmbio atua como um dos principais
mecanismos de equilíbrio da economia brasileira, conectando o cenário
externo via diferencial de juros e fluxo de capitais às decisões
internas de política monetária e à trajetória esperada da inflação.
Investimentos Estrangeiros e Variação Cambial
Os investimentos diretos estrangeiros (IDP) são uma das principais
fontes de entrada de dólares no Brasil e influenciam diretamente a taxa
de câmbio e as decisões de política monetária. Quando os fluxos
aumentam, há valorização do real; quando recuam, o câmbio se deprecia,
elevando a inflação e restringindo o espaço para cortes da Selic.
Segundo dados do Banco Central, o IDP médio mensal foi de US$ 4,5
bilhões entre 2018 e 2019, mas caiu para US$ 1,7 bilhão em abril de
2020, quando o dólar subiu de R$ 4,00 para R$ 5,60. Com a retomada
global e o diferencial de juros favorável, o fluxo voltou a crescer em
2022, superando US$ 7 bilhões mensais e contribuindo para a valorização
do real.
Essa relação mostra que entradas de capital aliviam pressões
inflacionárias e permitem juros menores, enquanto saídas forçam o BC a
elevar a Selic para conter a desvalorização cambial. O desafio é
equilibrar atração de capital e crescimento interno, mantendo a
confiança dos investidores sem comprometer o crédito e a atividade
econômica.
Em conclusão, o comportamento dos fluxos de investimento estrangeiro
é um termômetro da credibilidade macroeconômica do país. Ele conecta o
cenário internacional à política monetária doméstica e ajuda a explicar
como as projeções para o dólar condicionam as decisões sobre a Selic,
tornando-se um dos canais mais sensíveis da economia brasileira.
Dívida Pública, Inflação e Selic
A trajetória da dívida pública brasileira exerce influência direta
sobre as decisões de política monetária e o comportamento da inflação.
Quando o governo aumenta seu endividamento, há maior necessidade de
emissão de títulos públicos para financiar despesas, o que eleva a
oferta de papéis e pressiona os juros de mercado.
Além disso, um crescimento persistente da dívida tende a aumentar a
percepção de risco fiscal, reduzindo a confiança dos investidores e
pressionando o câmbio — efeito que, por sua vez, pode gerar inflação via
desvalorização do real.
De acordo com dados do Banco Central do Brasil, a Dívida Líquida do
Setor Público (DLSP) passou de aproximadamente R$195 bilhões em janeiro
de 2000 para mais de R$6 trilhões em 2024, o que representa uma alta
superior a 2.900% no período.Essa expansão foi acompanhada por fortes
oscilações na taxa Selic e na inflação, refletindo os esforços do Banco
Central para manter a estabilidade de preços em um ambiente de dívida
crescente.
Esses movimentos evidenciam como dívida, inflação e Selic estão
intrinsecamente conectadas.Quando a dívida cresce e a confiança fiscal
se deteriora, o prêmio de risco exigido pelos investidores aumenta,
elevando os juros longos e pressionando a inflação via câmbio. Para
conter esses efeitos, o Banco Central precisa elevar a Selic, o que
encarece o crédito, freia o consumo e reduz o investimento interno.
Por outro lado, em períodos de consolidação fiscal e inflação sob
controle, a queda da dívida em proporção ao PIB permite uma política
monetária mais flexível. O resultado é um ambiente de juros menores,
câmbio mais estável e menor pressão inflacionária, criando condições
favoráveis para o crescimento econômico sustentável.
CDS, Risco-País e Influência na Selic
O Credit Default Swap (CDS) é um derivativo que mede o custo de se
proteger contra o risco de calote da dívida soberana. Em outras
palavras, ele funciona como um seguro contra o risco de crédito de um
país. Quanto maior o spread do CDS, maior é a percepção de risco fiscal
e econômico e, consequentemente, menor é o apetite de investidores
estrangeiros para manter capital no país.
No caso do Brasil, o comportamento do CDS de 5 anos, medido em
pontos-base (bps), mostra uma correlação clara com a política monetária
e o câmbio
Em 2008, no auge da crise financeira global, o CDS Brasil ultrapassou
400 bps, refletindo forte aversão ao risco e desvalorização do real
(USD/BRL chegou a R$ 2,40). Nesse contexto, a Selic estava em 13,75%, e
o Banco Central manteve juros elevados para evitar fuga de capitais e
conter a inflação.
Já em 2019, com inflação controlada, contas públicas relativamente
estáveis e CDS abaixo de 100 bps, o BC conseguiu reduzir a Selic para
5,00%, o menor nível da história até então. Durante a pandemia de 2020,
o CDS voltou a subir fortemente, atingindo cerca de 330 bps, refletindo
incerteza fiscal e política. Mesmo com o real ultrapassando R$ 5,60 por
dólar, o BC reduziu temporariamente a Selic para 2,00%, diante da
recessão global, mas precisou reverter o ciclo em 2021, elevando os
juros até 13,75% em resposta à deterioração do risco país e à escalada
inflacionária. Em 2025, o CDS se estabilizou na faixa de 130–150 bps,
ainda acima do nível pré-pandemia, mostrando que o mercado mantém
cautela com o quadro fiscal brasileiro.
Esses dados evidenciam que o CDS funciona como um termômetro da
credibilidade fiscal e da confiança internacional. Quando o risco país
sobe, os investidores exigem maior retorno para financiar o governo, o
que pressiona a curva de juros e dificulta cortes na Selic. Por outro
lado, quando o CDS recua, indicando menor percepção de risco, o Banco
Central ganha espaço para reduzir os juros sem comprometer a
estabilidade cambial.Em síntese, o CDS, o câmbio e a Selic formam um
triângulo de interdependência na economia brasileira:
CDS alto → saída de capital → dólar sobe → inflação pressiona → Selic
sobe.
CDS baixo → entrada de capital → real se valoriza → inflação recua →
Selic pode cair.
Assim, o risco país, captado pelo CDS, é não apenas um indicador
financeiro, mas também um instrumento crucial para antecipar os
movimentos de política monetária, influenciando diretamente as projeções
para o dólar e as decisões do Copom.
Commodities e Influência na Valorização do
Real
As commodities desempenham papel central na economia brasileira,
representando uma parcela expressiva das exportações nacionais. Em 2024,
os principais produtos de exportação foram combustíveis minerais, óleos
e derivados, oleaginosas (como soja) e minérios — somando grandes
volumes nas receitas externas do país.
Dados da série “Exports: Commodities for Brazil” indicam que o valor
das exportações de commodities brasileiras em 2024 ultrapassou US$ 337
bilhões, reforçando o peso desse setor nas transações externas.
Essa forte dependência faz com que o Brasil seja frequentemente
classificado como uma “commodity currency” — ou seja, uma moeda com
sensibilidade aos preços internacionais das matérias-primas. Estudos
empíricos mostram correlação positiva entre os índices de commodities e
a taxa de câmbio BRL/USD: quando os preços das commodities sobem, o real
tende a se valorizar; quando caem, sofrem desvalorização.
Valorização das commodities → aumento das receitas de exportação
Altas nos preços de soja, minério, petróleo e outras matérias-primas
elevam a arrecadação cambial. Isso gera maior oferta de dólares no
mercado doméstico, o que tende a valorizar o real. Com o real mais
forte, o câmbio contribui para aliviar a pressão inflacionária
interna.
Desvalorização das commodities → contração dos fluxos em dólares
Quando os preços das commodities recuam, a entrada de dólares se reduz.
Pouco volume de divisas externas e menor receita cambial pressionam o
real para baixo, o que pode acelerar o movimento de desvalorização
cambial.
Os impactos na inflação e na política monetária são evidentes, pois a
desvalorização do real eleva o custo de importados, combustíveis e
insumos industriais, empurrando a inflação para cima. Esse efeito
pressiona o Banco Central a ajustar a Selic para cima como resposta para
conter o repasse cambial aos preços domésticos.
Esse tópico de commodities se integra diretamente à dinâmica de
projeções do dólar e decisões de Selic porque demonstra um canal real
(externo) de influência sobre o câmbio. O valor do real não é moldado
apenas por juros ou fluxo financeiro, mas também pelas forças de preços
globais de bens primários.
Assim, em cenários de alta nos preços de commodities, o real pode se
valorizar, diminuindo a necessidade do Banco Central de recorrer a
elevações drásticas da Selic. Por outro lado, em ambientes de queda
global nas commodities, o risco cambial pode se acelerar, forçando o BC
a manter juros elevados ou postergar cortes, mesmo que os dados
domésticos permitam flexibilização.
Conclusão
A análise integrada entre câmbio, taxa Selic, fluxos de capitais,
dívida pública, risco-país (CDS) e mercado de commodities evidencia a
natureza multifatorial da política monetária brasileira. Cada um desses
elementos interage de forma dinâmica, gerando efeitos cruzados que
condicionam tanto o comportamento da inflação quanto o espaço de atuação
do Banco Central.
As projeções para o dólar são o elo central dessa engrenagem. A
valorização da moeda norte-americana tende a encarecer importados,
elevar o IPCA e exigir juros mais altos para ancorar expectativas e
conter a saída de capital estrangeiro. Já a apreciação do real,
impulsionada por fluxos externos, melhora fiscal temporária ou alta nos
preços das commodities, reduz pressões inflacionárias e cria espaço para
cortes graduais da Selic.
Ao mesmo tempo, a dívida pública e o CDS funcionam como indicadores
de credibilidade fiscal e percepção de risco. Um aumento do
endividamento ou do prêmio de risco eleva a desconfiança dos
investidores, pressiona o câmbio e obriga o Banco Central a manter uma
postura mais restritiva. Por outro lado, um cenário de melhora fiscal,
estabilidade política e termos de troca favoráveis fortalece o real e
permite maior flexibilidade na condução da política monetária.
O mercado de commodities atua como canal real de transmissão: altas
de preços fortalecem a balança comercial e sustentam a valorização
cambial, enquanto quedas reduzem a entrada de dólares e reativam
pressões sobre o câmbio e os juros. Assim, a política monetária
brasileira precisa constantemente equilibrar variáveis internas
(inflação, atividade, dívida) e externas (Fed Funds, preços de
commodities, fluxo de capitais) para preservar a estabilidade
macroeconômica.
Em síntese, o relacionamento entre o câmbio e a Selic é o núcleo da
política econômica no Brasil. Ele traduz a resposta do país às condições
globais de liquidez, à confiança fiscal doméstica e ao apetite de risco
dos investidores. Manter esse equilíbrio exige coordenação entre
política monetária e fiscal, previsibilidade institucional e vigilância
constante sobre o ambiente externo. É essa interação entre juros, câmbio
e credibilidade que definirá a capacidade do Brasil de sustentar
crescimento estável, inflação controlada e competitividade internacional
nos próximos anos.
LS0tCnRpdGxlOiAgIlJlbGF0w7NyaW8gZGUgUG9sw610aWNhIE1vbmV0w6FyaWEgZSBDw6JtYmlvIgphdXRob3I6ICJEYXZpIE9saXZlaXJhKFRyYWluZWUpIGUgTHVpeiBSZXplbmRlKFRyYWluZWUpICIKZGF0ZTogIjA3LTEwLTIwMjUiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRoZW1lOiBsdW1lbgogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlIAotLS0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFKQoKIyBDYXJyZWdhciBwYWNvdGVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHBsb3RseSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShmcmVkcikKbGlicmFyeShyYmNiKQpsaWJyYXJ5KHF1YW50bW9kKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpYmJsZSkKbGlicmFyeShzY2FsZXMpCmxpYnJhcnkoaHR0cikKbGlicmFyeShqc29ubGl0ZSkKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KHBkZnRvb2xzKQoKCmBgYAoKCgojIEFuw6FsaXNlIGRhcyBFeHBlY3RhdGl2YXMgZGUgQ8OibWJpbyBlIEltcGFjdG9zIG5hcyBEZWNpc8O1ZXMgZGEgU2VsaWMKRXN0ZSByZWxhdMOzcmlvIHRlbSBjb21vIG9iamV0aXZvIGFuYWxpc2FyIGNvbW8gYXMgZXhwZWN0YXRpdmFzIGRlIGPDom1iaW8gaW5mbHVlbmNpYW0gYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhIGRvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChCYWNlbiksIGVzcGVjaWFsbWVudGUgZW0gcmVsYcOnw6NvIMOgIHRheGEgU2VsaWMuIEEgdmFyaWHDp8OjbyBkbyBkw7NsYXIgaW1wYWN0YSBkaXJldGFtZW50ZSBhIGluZmxhw6fDo28sIG8gZmx1eG8gZGUgY2FwaXRhaXMsIG8gZW5kaXZpZGFtZW50byBww7pibGljbyBlIG8gY29tcG9ydGFtZW50byBkb3MgaW52ZXN0aWRvcmVzLCBmYXRvcmVzIGVzc2VuY2lhaXMgcGFyYSBhcyBkZWNpc8O1ZXMgZG8gQ29wb20uIFNlcsOjbyBhYm9yZGFkb3Mgb3MgcHJpbmNpcGFpcyBlbGVtZW50b3MgcXVlIGNvbmVjdGFtIG8gY8OibWJpbyDDoCBwb2zDrXRpY2EgbW9uZXTDoXJpYSwgZmx1eG9zIGRlIGNhcGl0YWwsIGTDrXZpZGEgcMO6YmxpY2EsIENEUyBlIHByZcOnb3MgZGFzIGNvbW1vZGl0aWVzLCBkZXN0YWNhbmRvIGNvbW8gc3VhcyBvc2NpbGHDp8O1ZXMgYWZldGFtIG8gY29udHJvbGUgaW5mbGFjaW9uw6FyaW8gZSBvIGNyZXNjaW1lbnRvIGVjb27DtG1pY28uCgoKIyMgKipTZWxpYyBlIEPDom1iaW8qKgoKYGBge3J9CmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQpsaWJyYXJ5KHN0cmluZ3IpCgojIC0tLSBDb3JlcyBwYXJhIHJlZmVyw6puY2lhIC0tLQpDT1JfQ0FNQklPIDwtICIjMDIwMjNDIgpDT1JfU0VMSUMgPC0gIiNGRkQ3MDAiCgojIC0tLSBMZXIgZGFkb3MgZG8gZMOzbGFyIC0tLQpkb2xhcl9yYXcgPC0gcmVhZF9kZWxpbSgiRG9sYXIgMjAtMjUuY3N2IiwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiOyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSkKCm5hbWVzKGRvbGFyX3JhdykgPC0gdHJpbXdzKG5hbWVzKGRvbGFyX3JhdykpCgpkb2xhcl9wcm9jZXNzZWQgPC0gZG9sYXJfcmF3ICU+JQogIHJlbmFtZSh0YXhhX2NhbWJpb19kb2xhciA9IGBUYXhhIGRlIGNhbWJpb2ApICU+JQogIG11dGF0ZSgKICAgIHRheGFfY2FtYmlvX2RvbGFyID0gZ3N1YigiLCIsICIuIiwgdHJpbXdzKHRheGFfY2FtYmlvX2RvbGFyKSksCiAgICB0YXhhX2NhbWJpb19kb2xhciA9IGlmZWxzZSh0YXhhX2NhbWJpb19kb2xhciAlaW4lIGMoIiIsICItIiwgIk5EIiksIE5BLCB0YXhhX2NhbWJpb19kb2xhciksCiAgICB0YXhhX2NhbWJpb19kb2xhciA9IGFzLm51bWVyaWModGF4YV9jYW1iaW9fZG9sYXIpLAogICAgRGF0YSA9IHBhc3RlMChEYXRhLCAiLjAxIiksCiAgICBEYXRhID0geW1kKERhdGEpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIikKICApICU+JQogIGZpbHRlcighaXMubmEodGF4YV9jYW1iaW9fZG9sYXIpICYgdGF4YV9jYW1iaW9fZG9sYXIgPj0gMSkgJT4lCiAgbXV0YXRlKHRheGFfY2FtYmlvX2RvbGFyID0gcm91bmQodGF4YV9jYW1iaW9fZG9sYXIsIDIpKQoKIyAtLS0gTGVyIGRhZG9zIGRhIFNlbGljIC0tLQpzZWxpY19yYXcgPC0gcmVhZF9kZWxpbSgiVGF4IFNlbGljIDIwLTI1LmNzdiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gIjsiLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIikpCgpuYW1lcyhzZWxpY19yYXcpIDwtIHRyaW13cyhuYW1lcyhzZWxpY19yYXcpKQoKc2VsaWNfcHJvY2Vzc2VkIDwtIHNlbGljX3JhdyAlPiUKICByZW5hbWUodGF4YV9zZWxpYyA9IGBUYXhhIHNlbGljYCkgJT4lCiAgbXV0YXRlKAogICAgdGF4YV9zZWxpYyA9IGdzdWIoIiwiLCAiLiIsIHRyaW13cyh0YXhhX3NlbGljKSksCiAgICB0YXhhX3NlbGljID0gaWZlbHNlKHRheGFfc2VsaWMgJWluJSBjKCIiLCAiLSIsICJORCIpLCBOQSwgdGF4YV9zZWxpYyksCiAgICB0YXhhX3NlbGljID0gYXMubnVtZXJpYyh0YXhhX3NlbGljKSwKICAgIERhdGEgPSBwYXN0ZTAoIjAxLyIsIERhdGEpLAogICAgRGF0YSA9IGRteShEYXRhLCBsb2NhbGUgPSAicHRfQlIudXRmOCIpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIiksCiAgICB0YXhhX3NlbGljID0gcm91bmQodGF4YV9zZWxpYywgMikKICApCgojIC0tLSBKdW50YXIgZGFkb3MgLS0tCm1hY3JvX2RhdGFfY29tYmluZWQgPC0gaW5uZXJfam9pbihkb2xhcl9wcm9jZXNzZWQsIHNlbGljX3Byb2Nlc3NlZCwgYnkgPSAiRGF0YSIpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gQ1JJQcOHw4NPIERPIEdSw4FGSUNPIENPTSBMRUdFTkRBIE5BIEJBU0UgLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gbWFjcm9fZGF0YV9jb21iaW5lZCwKICAgIHR5cGUgPSAibGluZSIsCiAgICBoY2Flcyh4ID0gRGF0YSwgeSA9IHRheGFfY2FtYmlvX2RvbGFyKSwKICAgIG5hbWUgPSAiVGF4YSBkZSBDw6JtYmlvIChSJCkiLAogICAgeUF4aXMgPSAwLAogICAgY29sb3IgPSBDT1JfQ0FNQklPCiAgKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IG1hY3JvX2RhdGFfY29tYmluZWQsCiAgICB0eXBlID0gImxpbmUiLAogICAgaGNhZXMoeCA9IERhdGEsIHkgPSB0YXhhX3NlbGljKSwKICAgIG5hbWUgPSAiVGF4YSBTZWxpYyAoJSkiLAogICAgeUF4aXMgPSAxLAogICAgY29sb3IgPSBDT1JfU0VMSUMKICApICU+JQogIGhjX3lBeGlzX211bHRpcGxlcygKICAgIGxpc3QoCiAgICAgICMgUmVtb3ZlbmRvIG8gdMOtdHVsbyBkbyBFaXhvIFkgcGFyYSBsaW1wZXphCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpLAogICAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjJmfSIpCiAgICApLAogICAgbGlzdCgKICAgICAgIyBSZW1vdmVuZG8gbyB0w610dWxvIGRvIEVpeG8gWSBwYXJhIGxpbXBlemEKICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICAgIG9wcG9zaXRlID0gVFJVRSwKICAgICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOi4yZn0lIikKICAgICkKICApICU+JQogIGhjX3RpdGxlKHRleHQgPSAiQ29tcGFyYXRpdm8gVGF4YSBkZSBDw6JtYmlvIGUgU2VsaWMiKSAlPiUKICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCBlIElwZWFEYXRhIikgJT4lCiAgaGNfdG9vbHRpcChzaGFyZWQgPSBUUlVFLCB2YWx1ZURlY2ltYWxzID0gMikgJT4lCiAgIyAtLS0gTVVEQU7Dh0E6IENPTkZJR1VSQcOHw4NPIERBIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQVMgTk8gRUlYTyBYKSAtLS0KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsICMgUG9zacOnw6NvOiBJbmZlcmlvcgogICAgbGF5b3V0ID0gImhvcml6b250YWwiLAogICAgeSA9IDAKICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiBlIElwZWFEYXRhIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCgpgYGAKCkFzIHByb2plw6fDtWVzIHBhcmEgbyBjw6JtYmlvIHPDo28gZnVuZGFtZW50YWlzIHBhcmEgY29tcHJlZW5kZXIgYSBkaW7Dom1pY2EgZW50cmUgbyBkw7NsYXIgZSBhcyBkZWNpc8O1ZXMgZG8gQ29taXTDqiBkZSBQb2zDrXRpY2EgTW9uZXTDoXJpYSAoQ29wb20pLiBPIGTDs2xhciBmdW5jaW9uYSBjb21vIHVtIHRlcm3DtG1ldHJvIGdsb2JhbCBkZSBsaXF1aWRleiBlIHJpc2NvLCBpbmZsdWVuY2lhbmRvIGZsdXhvcyBkZSBjYXBpdGFpcywgY29tw6lyY2lvIGludGVybmFjaW9uYWwgZSBwcmXDp29zIGRvbcOpc3RpY29zLiBTdWEgdmFsb3JpemHDp8OjbyBvdSBkZXByZWNpYcOnw6NvIHJlcGVyY3V0ZSBkaXJldGFtZW50ZSBubyBJUENBLCBub3MgY3VzdG9zIGRlIGltcG9ydGHDp8O1ZXMgZSBpbnN1bW9zIGluZHVzdHJpYWlzIGUsIHBvcnRhbnRvLCBuYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhLgoKRW50cmUgMjAxOCBlIDIwMjIsIGVzc2EgcmVsYcOnw6NvIGZpY291IHBhcnRpY3VsYXJtZW50ZSBldmlkZW50ZS4gTmVzc2UgcGVyw61vZG8sIG8gZMOzbGFyIHN1Yml1IGRlIGFwcm94aW1hZGFtZW50ZSBSJCAzLDQwIHBhcmEgUiQgNSwxNiDigJQgdW1hIGRlcHJlY2lhw6fDo28gZGUgY2VyY2EgZGUgNTIlIGRvIHJlYWwg4oCUIGVucXVhbnRvIGEgU2VsaWMgY2FpdSBkZSA2LDUwJSBhbyBhbm8gKDIwMTgpIHBhcmEgbyBwaXNvIGhpc3TDs3JpY28gZGUgMiwwMCUgZW0gMjAyMCwgYW50ZXMgZGUgdm9sdGFyIGEgc3ViaXIgZm9ydGVtZW50ZSBwYXJhIDEzLDc1JSBlbSAyMDIyLiBFc3NhIHNlcXXDqm5jaWEgaWx1c3RyYSBvcyBkb2lzIHZldG9yZXMgZGUgY2F1c2FsaWRhZGUgZW50cmUgY8OibWJpbyBlIGp1cm9zLgoKUXVhbmRvIG8gZMOzbGFyIHNvYmUsIG8gcmVhbCBzZSBkZXN2YWxvcml6YS4gQSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwgZW5jYXJlY2UgaW1wb3J0YWRvcywgY29tYnVzdMOtdmVpcyBlIG1hdMOpcmlhcy1wcmltYXMsIHByZXNzaW9uYW5kbyBhIGluZmxhw6fDo28gdmlhIHJlcGFzc2UgY2FtYmlhbC4gRGlhbnRlIGRlc3NlIGNlbsOhcmlvLCBvIEJhbmNvIENlbnRyYWwgdGVuZGUgYSBlbGV2YXIgYSBTZWxpYyBwYXJhIGNvbnRlciBleHBlY3RhdGl2YXMgaW5mbGFjaW9uw6FyaWFzIGUgYXRyYWlyIGZsdXhvcyBleHRlcm5vcywgZm9ydGFsZWNlbmRvIG8gcmVhbC4gRm9pIGV4YXRhbWVudGUgbyBxdWUgb2NvcnJldSBlbnRyZSAyMDIxIGUgMjAyMjogY29tIG8gZMOzbGFyIGFpbmRhIGFjaW1hIGRlIFIkIDUsIG8gQmFuY28gY2VudHJhbCBpbmljaW91IHVtIGNpY2xvIGRlIGFsdGEgZGUgMS4xNzUgcG9udG9zLWJhc2UgbmEgU2VsaWMsIHJldmVydGVuZG8gbyBtb3ZpbWVudG8gYW50ZXJpb3IgZGUgcXVlZGEuCgpRdWFuZG8gbyBjw6JtYmlvIGNhaSwgbyByZWFsIHNlIHZhbG9yaXphLiBFbSBtb21lbnRvcyBkZSB2YWxvcml6YcOnw6NvIGRvIHJlYWwsIG8gZWZlaXRvIMOpIG8gb3Bvc3RvLiBQcm9kdXRvcyBpbXBvcnRhZG9zIGZpY2FtIG1haXMgYmFyYXRvcywgYSBpbmZsYcOnw6NvIHRlbmRlIGEgY2VkZXIsIGUgbyBCYW5jbyBDZW50cmFsIGdhbmhhIGVzcGHDp28gcGFyYSByZWR1emlyIGEgU2VsaWMuCkVudHJlIDIwMTggZSBtZWFkb3MgZGUgMjAxOSwgcG9yIGV4ZW1wbG8sIG8gY8OibWJpbyBwZXJtYW5lY2V1IHJlbGF0aXZhbWVudGUgZXN0w6F2ZWwsIGUgYSBpbmZsYcOnw6NvIGFiYWl4byBkYSBtZXRhIHBlcm1pdGl1IGNvcnRlcyBncmFkdWFpcyBuYSB0YXhhIGLDoXNpY2EgZGUgNiw1MCUgcGFyYSA1LDAwJSwgc2luYWxpemFuZG8gdW0gYW1iaWVudGUgZGUgYWzDrXZpbyBjYW1iaWFsIGUgbW9uZXTDoXJpby4KCkVzc2VzIG1vdmltZW50b3MgcmVmb3LDp2FtIGEgaW1wb3J0w6JuY2lhIGRlIG8gQmFuY28gQ2VudHJhbCBhY29tcGFuaGFyIGRlIHBlcnRvIGFzIHByb2plw6fDtWVzIHBhcmEgbyBjw6JtYmlvIGUgbyBkaWZlcmVuY2lhbCBkZSBqdXJvcyBlbnRyZSBCcmFzaWwgZSBFc3RhZG9zIFVuaWRvcy4KIFF1YW5kbyBvIGTDs2xhciBzZSB2YWxvcml6YSBlIHByZXNzaW9uYSBhIGluZmxhw6fDo28gcG9yIG1laW8gZG8gZW5jYXJlY2ltZW50byBkZSBpbXBvcnRhZG9zLCBvIEJhbmNvIENlbnRyYWwgdGVuZGUgYSBhZG90YXIgdW1hIHBvbMOtdGljYSBtb25ldMOhcmlhIG1haXMgY2F1dGVsb3NhLCBldml0YW5kbyBjb3J0ZXMgcHJlbWF0dXJvcyBkYSBTZWxpYyBlIHByaW9yaXphbmRvIGEgZXN0YWJpbGlkYWRlIGRlIHByZcOnb3MuIFBvciBvdXRybyBsYWRvLCBxdWFuZG8gbyByZWFsIHNlIGZvcnRhbGVjZSBlIG8gcmlzY28gZXh0ZXJubyBkaW1pbnVpLCBow6EgbWFpb3IgZXNwYcOnbyBwYXJhIGZsZXhpYmlsaXphw6fDo28gZGEgdGF4YSBkZSBqdXJvcywgasOhIHF1ZSBhIHZhbG9yaXphw6fDo28gY2FtYmlhbCBjb250cmlidWkgcGFyYSBjb250ZXIgYSBpbmZsYcOnw6NvIGUgcmVkdXppciBvIGN1c3RvIGRlIGltcG9ydGHDp8Ojby4KIApBc3NpbSwgYSBpbnRlcmHDp8OjbyBlbnRyZSBTZWxpYyBlIGPDom1iaW8gYXR1YSBjb21vIHVtIGRvcyBwcmluY2lwYWlzIG1lY2FuaXNtb3MgZGUgZXF1aWzDrWJyaW8gZGEgZWNvbm9taWEgYnJhc2lsZWlyYSwgY29uZWN0YW5kbyBvIGNlbsOhcmlvIGV4dGVybm8gdmlhIGRpZmVyZW5jaWFsIGRlIGp1cm9zIGUgZmx1eG8gZGUgY2FwaXRhaXMgw6BzIGRlY2lzw7VlcyBpbnRlcm5hcyBkZSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBlIMOgIHRyYWpldMOzcmlhIGVzcGVyYWRhIGRhIGluZmxhw6fDo28uCgoKIyMgKipJbnZlc3RpbWVudG9zIEVzdHJhbmdlaXJvcyBlIFZhcmlhw6fDo28gQ2FtYmlhbCoqCgpgYGB7cn0KbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKCiMgQ29yZXMgcGFyYSByZWZlcsOqbmNpYQpDT1JfSURQIDwtICIjRkVCNzEyIiAKCiMgMSkgTGVyIG8gYXJxdWl2byBDU1YKaWRwX3JhdyA8LSByZWFkX2RlbGltKAogICJJbnZlc3RpbWVudG9zIEVzdHJhbmdlaXJvcy5jc3YiLAogIGRlbGltID0gIjsiLAogIGNvbF9uYW1lcyA9IGMoIkRhdGEiLCAiSW52ZXN0aW1lbnRvcyIpLAogIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSwKICBza2lwID0gMSwKICBzaG93X2NvbF90eXBlcyA9IEZBTFNFCikKCiMgMikgUHJvY2Vzc2FyIGRhZG9zCmlkcCA8LSBpZHBfcmF3ICU+JQogIG11dGF0ZSgKICAgIGFubyA9IGFzLmludGVnZXIoc3RyX3RyaW0oRGF0YSkpLAogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0wMS0wMSIpKSwgCiAgICBpZHBfYmlsaG9lcyA9IGFzLm51bWVyaWMoZ3N1YigiLCIsICIuIiwgSW52ZXN0aW1lbnRvcykpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKGlkcF9iaWxob2VzKSkgJT4lCiAgYXJyYW5nZShkYXRhKQoKIyAtLS0gQ29udmVydGVyIHBhcmEgZm9ybWF0byBUaW1lIFNlcmllcyBkbyBIaWdoY2hhcnRzIC0tLQppZHBfaGMgPC0gaWRwICU+JQogIG11dGF0ZShEYXRhX3RpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChkYXRhKSkgJT4lCiAgc2VsZWN0KERhdGFfdGltZXN0YW1wLCBpZHBfYmlsaG9lcykKCiMgMykgR2VyYXIgZ3LDoWZpY28KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUgCiAgaGNfYWRkX3NlcmllcygKICAgIGRhdGEgPSBsaXN0X3BhcnNlMihpZHBfaGMpLCAKICAgIHR5cGUgPSAiY29sdW1uIiwgCiAgICBuYW1lID0gIklEUCAoYmlsaMO1ZXMgVVMkKSIsICMgTyBub21lIGRhIHPDqXJpZSDDqSBwdXhhZG8gcGFyYSBhIGxlZ2VuZGEKICAgIGNvbG9yID0gQ09SX0lEUCwKICAgIGJvcmRlclJhZGl1cyA9IDMsCiAgICBwb2ludFdpZHRoID0gNDAsCiAgICBkYXRhTGFiZWxzID0gbGlzdCgKICAgICAgZW5hYmxlZCA9IFRSVUUsCiAgICAgIGZvcm1hdCA9ICd7cG9pbnQueTouMWZ9JywgCiAgICAgIHN0eWxlID0gbGlzdChmb250V2VpZ2h0ID0gJ2JvbGQnLCBjb2xvciA9ICcjMDAwMDAwJyksCiAgICAgIHkgPSAtNQogICAgKQogICkgJT4lCiAgaGNfdGl0bGUoCiAgICB0ZXh0ID0gIkludmVzdGltZW50b3MgRGlyZXRvcyBMw61xdWlkb3Mgbm8gQnJhc2lsICgyMDE44oCTMjAyNCkiCiAgKSAlPiUKICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCAoU0dTIDIzNjQ1KSIpICU+JQogIGhjX3hBeGlzKAogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICB0eXBlID0gImRhdGV0aW1lIiwKICAgIGxhYmVscyA9IGxpc3QoZm9ybWF0ID0gInt2YWx1ZTolWX0iKQogICkgJT4lCiAgaGNfeUF4aXMoCiAgICAjIFTDrXR1bG8gZG8gRWl4byBZIHZvbHRhbmRvIGFvIHBhZHLDo28KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlZhbG9yIChVUyQgYmlsaMO1ZXMpIiksIAogICAgbGFiZWxzID0gbGlzdCgKICAgICAgdXNlSFRNTCA9IFRSVUUsCiAgICAgIGZvcm1hdHRlciA9IEpTKCJmdW5jdGlvbigpIHsgcmV0dXJuIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRoaXMudmFsdWUsIDAsICcsJywgJy4nKTsgfSIpCiAgICApLAogICAgdGlja0ludGVydmFsID0gMjUsCiAgICBtaW4gPSAwCiAgKSAlPiUKICBoY190b29sdGlwKAogICAgdXNlSFRNTCA9IFRSVUUsCiAgICBoZWFkZXJGb3JtYXQgPSAiPGI+e3BvaW50LmtleTolWX08L2I+PGJyLz4iLAogICAgcG9pbnRGb3JtYXQgPSAiSURQOiA8Yj57cG9pbnQueTosLjFmfSBiaSBVUyQ8L2I+IgogICkgJT4lCiAgIyAtLS0gTVVEQU7Dh0E6IExFR0VOREEgUkUtSEFCSUxJVEFEQSBFIFBPU0lDSU9OQURBIE5PIFJPREFQw4kgLS0tCiAgaGNfbGVnZW5kKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBhbGlnbiA9ICJjZW50ZXIiLAogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCAjIENvbG9jYSBhIGxlZ2VuZGEgbmEgcGFydGUgaW5mZXJpb3IgKHByw7N4aW1hIGFvIEVpeG8gWCkKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIHkgPSAxMCAjIEFqdXN0ZSBkZSBtYXJnZW0KICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogQkNCIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCgpgYGAKCk9zIGludmVzdGltZW50b3MgZGlyZXRvcyBlc3RyYW5nZWlyb3MgKElEUCkgc8OjbyB1bWEgZGFzIHByaW5jaXBhaXMgZm9udGVzIGRlIGVudHJhZGEgZGUgZMOzbGFyZXMgbm8gQnJhc2lsIGUgaW5mbHVlbmNpYW0gZGlyZXRhbWVudGUgYSB0YXhhIGRlIGPDom1iaW8gZSBhcyBkZWNpc8O1ZXMgZGUgcG9sw610aWNhIG1vbmV0w6FyaWEuIFF1YW5kbyBvcyBmbHV4b3MgYXVtZW50YW0sIGjDoSB2YWxvcml6YcOnw6NvIGRvIHJlYWw7IHF1YW5kbyByZWN1YW0sIG8gY8OibWJpbyBzZSBkZXByZWNpYSwgZWxldmFuZG8gYSBpbmZsYcOnw6NvIGUgcmVzdHJpbmdpbmRvIG8gZXNwYcOnbyBwYXJhIGNvcnRlcyBkYSBTZWxpYy4KClNlZ3VuZG8gZGFkb3MgZG8gQmFuY28gQ2VudHJhbCwgbyBJRFAgbcOpZGlvIG1lbnNhbCBmb2kgZGUgVVMkIDQsNSBiaWxow7VlcyBlbnRyZSAyMDE4IGUgMjAxOSwgbWFzIGNhaXUgcGFyYSBVUyQgMSw3IGJpbGjDo28gZW0gYWJyaWwgZGUgMjAyMCwgcXVhbmRvIG8gZMOzbGFyIHN1Yml1IGRlIFIkIDQsMDAgcGFyYSBSJCA1LDYwLiBDb20gYSByZXRvbWFkYSBnbG9iYWwgZSBvIGRpZmVyZW5jaWFsIGRlIGp1cm9zIGZhdm9yw6F2ZWwsIG8gZmx1eG8gdm9sdG91IGEgY3Jlc2NlciBlbSAyMDIyLCBzdXBlcmFuZG8gVVMkIDcgYmlsaMO1ZXMgbWVuc2FpcyBlIGNvbnRyaWJ1aW5kbyBwYXJhIGEgdmFsb3JpemHDp8OjbyBkbyByZWFsLgoKRXNzYSByZWxhw6fDo28gbW9zdHJhIHF1ZSBlbnRyYWRhcyBkZSBjYXBpdGFsIGFsaXZpYW0gcHJlc3PDtWVzIGluZmxhY2lvbsOhcmlhcyBlIHBlcm1pdGVtIGp1cm9zIG1lbm9yZXMsIGVucXVhbnRvIHNhw61kYXMgZm9yw6dhbSBvIEJDIGEgZWxldmFyIGEgU2VsaWMgcGFyYSBjb250ZXIgYSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwuIE8gZGVzYWZpbyDDqSBlcXVpbGlicmFyIGF0cmHDp8OjbyBkZSBjYXBpdGFsIGUgY3Jlc2NpbWVudG8gaW50ZXJubywgbWFudGVuZG8gYSBjb25maWFuw6dhIGRvcyBpbnZlc3RpZG9yZXMgc2VtIGNvbXByb21ldGVyIG8gY3LDqWRpdG8gZSBhIGF0aXZpZGFkZSBlY29uw7RtaWNhLgoKRW0gY29uY2x1c8OjbywgbyBjb21wb3J0YW1lbnRvIGRvcyBmbHV4b3MgZGUgaW52ZXN0aW1lbnRvIGVzdHJhbmdlaXJvIMOpIHVtIHRlcm3DtG1ldHJvIGRhIGNyZWRpYmlsaWRhZGUgbWFjcm9lY29uw7RtaWNhIGRvIHBhw61zLiBFbGUgY29uZWN0YSBvIGNlbsOhcmlvIGludGVybmFjaW9uYWwgw6AgcG9sw610aWNhIG1vbmV0w6FyaWEgZG9tw6lzdGljYSBlIGFqdWRhIGEgZXhwbGljYXIgY29tbyBhcyBwcm9qZcOnw7VlcyBwYXJhIG8gZMOzbGFyIGNvbmRpY2lvbmFtIGFzIGRlY2lzw7VlcyBzb2JyZSBhIFNlbGljLCB0b3JuYW5kby1zZSB1bSBkb3MgY2FuYWlzIG1haXMgc2Vuc8OtdmVpcyBkYSBlY29ub21pYSBicmFzaWxlaXJhLgoKCgojIyAqKkTDrXZpZGEgUMO6YmxpY2EsIEluZmxhw6fDo28gZSBTZWxpYyoqCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQoKIyAtLS0gQ29yIGRhIFPDqXJpZSAtLS0KQ09SX0RJVklEQSA8LSAiIzAwMzM2NiIKCiMgLS0tIExlciBkYWRvcyBkYSBEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvIC0tLQpkaXZpZGFfcmF3IDwtIHJlYWRfZGVsaW0oIkRpdmlkYSBMaXF1aWRhIGRvIFNldG9yIFB1YmxpY28uY3N2IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gIjsiLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlKGVuY29kaW5nID0gImxhdGluMSIpKQoKbmFtZXMoZGl2aWRhX3JhdykgPC0gdHJpbXdzKG5hbWVzKGRpdmlkYV9yYXcpKQoKIyAtLS0gQ09SUkXDh8ODTyBUw4lDTklDQTogUmVub21laWEgcGVsbyDDrW5kaWNlIHBhcmEgZXZpdGFyIGVycm8gZGUgY2FyYWN0ZXJlcyAtLS0KbmFtZXMoZGl2aWRhX3JhdylbMl0gPC0gInZhbG9yX3JhdyIgCgpkaXZpZGFfcHJvY2Vzc2VkIDwtIGRpdmlkYV9yYXcgJT4lCiAgcmVuYW1lKHZhbG9yID0gdmFsb3JfcmF3KSAlPiUgCiAgbXV0YXRlKAogICAgdmFsb3IgPSBnc3ViKCIsIiwgIi4iLCB0cmltd3ModmFsb3IpKSwKICAgIHZhbG9yID0gaWZlbHNlKHZhbG9yICVpbiUgYygiIiwgIi0iLCAiTkQiKSwgTkEsIHZhbG9yKSwKICAgIHZhbG9yID0gYXMubnVtZXJpYyh2YWxvciksCiAgICAKICAgICMgLS0tIE1VREFOw4dBIERFIEVTQ0FMQTogRGl2aWRpciBwb3IgMTAuMDAwICgxZTQpIHBhcmEgcXVlIG9zIHZhbG9yZXMgZmlxdWVtIG5hIGNhc2EgZG9zIDMwMCAtLS0KICAgIHZhbG9yX21pbGhvZXMgPSB2YWxvciAvIDFlNCwKICAgIAogICAgRGF0YSA9IHBhc3RlMCgiMDEvIiwgRGF0YSksCiAgICBEYXRhID0gZG15KERhdGEsIGxvY2FsZSA9ICJwdF9CUi51dGY4IiksCiAgICBEYXRhID0gZmxvb3JfZGF0ZShEYXRhLCAibW9udGgiKSwKICAgIAogICAgIyBNYW50w6ltIG8gYXJyZWRvbmRhbWVudG8gcGFyYSAxIGNhc2EgZGVjaW1hbCwgY29tbyBlbSAiMzAwLjEiCiAgICB2YWxvcl9taWxob2VzID0gcm91bmQodmFsb3JfbWlsaG9lcywgMSkKICApICU+JQogIGZpbHRlcighaXMubmEodmFsb3JfbWlsaG9lcykpCgojIC0tLSBDb252ZXJ0ZXIgcGFyYSBmb3JtYXRvIEhpZ2hjaGFydGVyIC0tLQpkaXZpZGFfaGMgPC0gZGl2aWRhX3Byb2Nlc3NlZCAlPiUKICBzZWxlY3QoRGF0YSwgdmFsb3JfbWlsaG9lcykgJT4lCiAgbXV0YXRlKERhdGEgPSBkYXRldGltZV90b190aW1lc3RhbXAoRGF0YSkpCgojIC0tLSBHcsOhZmljbyBkZSBzw6lyaWUgdGVtcG9yYWwgZGEgRMOtdmlkYSBMw61xdWlkYSAtLS0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRpdmlkYV9oYyksCiAgICB0eXBlID0gImxpbmUiLAogICAgbmFtZSA9ICJEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvIChSJCBtaWxow7VlcykiLAogICAgY29sb3IgPSBDT1JfRElWSURBLAogICAgbGluZVdpZHRoID0gMiwKICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDIsIHN5bWJvbCA9ICJjaXJjbGUiKQogICkgJT4lCiAgaGNfdGl0bGUodGV4dCA9ICJEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvICgyMDIwLTIwMjUpIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyAyMDY0KSIpICU+JQogIGhjX3lBeGlzKAogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiVmFsb3IgKFIkIG1pbGjDtWVzKSIpLAogICAgIyBGb3JtYXRvIGRvIEVpeG8gWTogMSBjYXNhIGRlY2ltYWwgZSBzdWZpeG8gJ21pJwogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlOiwuMWZ9IG1pIikKICApICU+JQogIGhjX3Rvb2x0aXAoCiAgICBzaGFyZWQgPSBUUlVFLAogICAgdmFsdWVEZWNpbWFscyA9IDEsCiAgICB2YWx1ZVByZWZpeCA9ICJSJCAiLAogICAgdmFsdWVTdWZmaXggPSAiIG1pIiwKICAgICMgRm9ybWF0byBkbyBUb29sdGlwOiAxIGNhc2EgZGVjaW1hbCBlIHN1Zml4byAnbWknCiAgICBwb2ludEZvcm1hdCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6e3Nlcmllcy5jb2xvcn0nPntzZXJpZXMubmFtZX08L3NwYW4+OiA8Yj57cG9pbnQueTosLjFmfSBtaSBSJDwvYj48YnIvPiIKICApICU+JQogICMgLS0tIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQSBOTyBFSVhPIFgpIC0tLQogIGhjX2xlZ2VuZCgKICAgIGVuYWJsZWQgPSBUUlVFLAogICAgYWxpZ24gPSAiY2VudGVyIiwKICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwKICAgIGxheW91dCA9ICJob3Jpem9udGFsIiwKICAgIHkgPSAwCiAgKSAlPiUKICBoY19leHBvcnRpbmcoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IEJDQiB8IEdyw6FmaWNvOiBFbGFib3Jhw6fDo28gUHLDs3ByaWEiKSAlPiUKICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIpCgpgYGAKCkEgdHJhamV0w7NyaWEgZGEgZMOtdmlkYSBww7pibGljYSBicmFzaWxlaXJhIGV4ZXJjZSBpbmZsdcOqbmNpYSBkaXJldGEgc29icmUgYXMgZGVjaXPDtWVzIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgbyBjb21wb3J0YW1lbnRvIGRhIGluZmxhw6fDo28uIFF1YW5kbyBvIGdvdmVybm8gYXVtZW50YSBzZXUgZW5kaXZpZGFtZW50bywgaMOhIG1haW9yIG5lY2Vzc2lkYWRlIGRlIGVtaXNzw6NvIGRlIHTDrXR1bG9zIHDDumJsaWNvcyBwYXJhIGZpbmFuY2lhciBkZXNwZXNhcywgbyBxdWUgZWxldmEgYSBvZmVydGEgZGUgcGFww6lpcyBlIHByZXNzaW9uYSBvcyBqdXJvcyBkZSBtZXJjYWRvLgoKIEFsw6ltIGRpc3NvLCB1bSBjcmVzY2ltZW50byBwZXJzaXN0ZW50ZSBkYSBkw612aWRhIHRlbmRlIGEgYXVtZW50YXIgYSBwZXJjZXDDp8OjbyBkZSByaXNjbyBmaXNjYWwsIHJlZHV6aW5kbyBhIGNvbmZpYW7Dp2EgZG9zIGludmVzdGlkb3JlcyBlIHByZXNzaW9uYW5kbyBvIGPDom1iaW8g4oCUIGVmZWl0byBxdWUsIHBvciBzdWEgdmV6LCBwb2RlIGdlcmFyIGluZmxhw6fDo28gdmlhIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbC4KIApEZSBhY29yZG8gY29tIGRhZG9zIGRvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsLCBhIETDrXZpZGEgTMOtcXVpZGEgZG8gU2V0b3IgUMO6YmxpY28gKERMU1ApIHBhc3NvdSBkZSBhcHJveGltYWRhbWVudGUgUiQxOTUgYmlsaMO1ZXMgZW0gamFuZWlybyBkZSAyMDAwIHBhcmEgbWFpcyBkZSBSJDYgdHJpbGjDtWVzIGVtIDIwMjQsIG8gcXVlIHJlcHJlc2VudGEgdW1hIGFsdGEgc3VwZXJpb3IgYSAyLjkwMCUgbm8gcGVyw61vZG8uRXNzYSBleHBhbnPDo28gZm9pIGFjb21wYW5oYWRhIHBvciBmb3J0ZXMgb3NjaWxhw6fDtWVzIG5hIHRheGEgU2VsaWMgZSBuYSBpbmZsYcOnw6NvLCByZWZsZXRpbmRvIG9zIGVzZm9yw6dvcyBkbyBCYW5jbyBDZW50cmFsIHBhcmEgbWFudGVyIGEgZXN0YWJpbGlkYWRlIGRlIHByZcOnb3MgZW0gdW0gYW1iaWVudGUgZGUgZMOtdmlkYSBjcmVzY2VudGUuCgpFc3NlcyBtb3ZpbWVudG9zIGV2aWRlbmNpYW0gY29tbyBkw612aWRhLCBpbmZsYcOnw6NvIGUgU2VsaWMgZXN0w6NvIGludHJpbnNlY2FtZW50ZSBjb25lY3RhZGFzLlF1YW5kbyBhIGTDrXZpZGEgY3Jlc2NlIGUgYSBjb25maWFuw6dhIGZpc2NhbCBzZSBkZXRlcmlvcmEsIG8gcHLDqm1pbyBkZSByaXNjbyBleGlnaWRvIHBlbG9zIGludmVzdGlkb3JlcyBhdW1lbnRhLCBlbGV2YW5kbyBvcyBqdXJvcyBsb25nb3MgZSBwcmVzc2lvbmFuZG8gYSBpbmZsYcOnw6NvIHZpYSBjw6JtYmlvLiBQYXJhIGNvbnRlciBlc3NlcyBlZmVpdG9zLCBvIEJhbmNvIENlbnRyYWwgcHJlY2lzYSBlbGV2YXIgYSBTZWxpYywgbyBxdWUgZW5jYXJlY2UgbyBjcsOpZGl0bywgZnJlaWEgbyBjb25zdW1vIGUgcmVkdXogbyBpbnZlc3RpbWVudG8gaW50ZXJuby4KClBvciBvdXRybyBsYWRvLCBlbSBwZXLDrW9kb3MgZGUgY29uc29saWRhw6fDo28gZmlzY2FsIGUgaW5mbGHDp8OjbyBzb2IgY29udHJvbGUsIGEgcXVlZGEgZGEgZMOtdmlkYSBlbSBwcm9wb3LDp8OjbyBhbyBQSUIgcGVybWl0ZSB1bWEgcG9sw610aWNhIG1vbmV0w6FyaWEgbWFpcyBmbGV4w612ZWwuIE8gcmVzdWx0YWRvIMOpIHVtIGFtYmllbnRlIGRlIGp1cm9zIG1lbm9yZXMsIGPDom1iaW8gbWFpcyBlc3TDoXZlbCBlIG1lbm9yIHByZXNzw6NvIGluZmxhY2lvbsOhcmlhLCBjcmlhbmRvIGNvbmRpw6fDtWVzIGZhdm9yw6F2ZWlzIHBhcmEgbyBjcmVzY2ltZW50byBlY29uw7RtaWNvIHN1c3RlbnTDoXZlbC4KCiMjICoqQ0RTLCBSaXNjby1QYcOtcyBlIEluZmx1w6puY2lhIG5hIFNlbGljKioKCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKbGlicmFyeShoaWdoY2hhcnRlcikKbGlicmFyeShzdHJpbmdyKQoKIyBDb3JlcyBwYXJhIHJlZmVyw6puY2lhCkNPUl9DRFMgPC0gIiMwMjAyM0MiICAjIEF6dWwgRXNjdXJvCkNPUl9TRUxJQyA8LSAiI0ZGRDcwMCIgIyBBbWFyZWxvL091cm8KCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLSAxLiBMRUlUVVJBIEUgUFJPQ0VTU0FNRU5UTyBERSBEQURPUyAoU0VMSUMpIC0tLQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc2VsaWNfcmF3IDwtIHJlYWRfZGVsaW0oIlRheCBTZWxpYyAyMC0yNS5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICI7IiwKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlKGVuY29kaW5nID0gImxhdGluMSIpKQoKbmFtZXMoc2VsaWNfcmF3KSA8LSB0cmltd3MobmFtZXMoc2VsaWNfcmF3KSkKCnNlbGljX3Byb2Nlc3NlZCA8LSBzZWxpY19yYXcgJT4lCiAgcmVuYW1lKHRheGFfc2VsaWMgPSBgVGF4YSBzZWxpY2ApICU+JQogIG11dGF0ZSgKICAgIHRheGFfc2VsaWMgPSBnc3ViKCIsIiwgIi4iLCB0cmltd3ModGF4YV9zZWxpYykpLAogICAgdGF4YV9zZWxpYyA9IGlmZWxzZSh0YXhhX3NlbGljICVpbiUgYygiIiwgIi0iLCAiTkQiKSwgTkEsIHRheGFfc2VsaWMpLAogICAgdGF4YV9zZWxpYyA9IGFzLm51bWVyaWModGF4YV9zZWxpYyksCiAgICBEYXRhID0gcGFzdGUwKCIwMS8iLCBEYXRhKSwKICAgIERhdGEgPSBkbXkoRGF0YSwgbG9jYWxlID0gInB0X0JSLnV0ZjgiKSwKICAgIERhdGEgPSBmbG9vcl9kYXRlKERhdGEsICJtb250aCIpLAogICAgdGF4YV9zZWxpYyA9IHJvdW5kKHRheGFfc2VsaWMsIDIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHRheGFfc2VsaWMpKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDIuIExFSVRVUkEgRSBQUk9DRVNTQU1FTlRPIERFIERBRE9TIChDRFMgNSBBTk9TKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNkc19yYXcgPC0gcmVhZF9kZWxpbSgiQ0RTIEJyYXNpbC5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiOyIsCiAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIikpCgpuYW1lcyhjZHNfcmF3KSA8LSB0cmltd3MobmFtZXMoY2RzX3JhdykpCgpjZHNfcHJvY2Vzc2VkIDwtIGNkc19yYXcgJT4lCiAgcmVuYW1lKHZhbG9yX2NkcyA9IENEUykgJT4lCiAgbXV0YXRlKAogICAgdmFsb3JfY2RzID0gYXMubnVtZXJpYyhnc3ViKCIsIiwgIi4iLCB0cmltd3ModmFsb3JfY2RzKSkpLAogICAgRGF0YSA9IGRteShEYXRhLCBsb2NhbGUgPSAicHRfQlIudXRmOCIpLAogICAgRGF0YSA9IGZsb29yX2RhdGUoRGF0YSwgIm1vbnRoIiksCiAgICB2YWxvcl9jZHMgPSByb3VuZCh2YWxvcl9jZHMsIDIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHZhbG9yX2NkcykgJiAhaXMubmEoRGF0YSkpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gMy4gSlVOVEFSIERBRE9TIEUgQ09OVkVSVEVSIFBBUkEgSElHSENIQVJURVIgLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQptYWNyb19kYXRhX2NvbWJpbmVkIDwtIGZ1bGxfam9pbihjZHNfcHJvY2Vzc2VkLCBzZWxpY19wcm9jZXNzZWQsIGJ5ID0gIkRhdGEiKSAlPiUKICBhcnJhbmdlKERhdGEpICU+JQogIG11dGF0ZShEYXRhX2hjID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKERhdGEpKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDQuIENSSUHDh8ODTyBETyBHUsOBRklDTyBDT01CSU5BRE8gKENEUyB4IFNFTElDKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lCiAgIyAtLS0gU8OJUklFIENEUyAtLS0KICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IG1hY3JvX2RhdGFfY29tYmluZWQsCiAgICB0eXBlID0gImxpbmUiLAogICAgaGNhZXMoeCA9IERhdGFfaGMsIHkgPSB2YWxvcl9jZHMpLAogICAgbmFtZSA9ICJDRFMgNSBBbm9zIChwYikiLAogICAgeUF4aXMgPSAwLAogICAgY29sb3IgPSBDT1JfQ0RTLAogICAgbGluZVdpZHRoID0gMgogICkgJT4lCiAgIyAtLS0gU8OJUklFIFNFTElDIC0tLQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gbWFjcm9fZGF0YV9jb21iaW5lZCwKICAgIHR5cGUgPSAibGluZSIsCiAgICBoY2Flcyh4ID0gRGF0YV9oYywgeSA9IHRheGFfc2VsaWMpLAogICAgbmFtZSA9ICJUYXhhIFNlbGljICglKSIsCiAgICB5QXhpcyA9IDEsCiAgICBjb2xvciA9IENPUl9TRUxJQywKICAgIGxpbmVXaWR0aCA9IDIKICApICU+JQogICMgLS0tIENPTkZJR1VSQcOHw4NPIERPUyBFSVhPUyBZIC0tLQogIGhjX3lBeGlzX211bHRpcGxlcygKICAgIGxpc3QoICMgRWl4byBZIHByaW3DoXJpbyAoMCk6IENEUwogICAgICB0aXRsZSA9IGxpc3QodGV4dCA9IE5VTEwpLAogICAgICBvcHBvc2l0ZSA9IEZBTFNFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjFmfSBwdHMiKQogICAgKSwKICAgIGxpc3QoICMgRWl4byBZIHNlY3VuZMOhcmlvICgxKTogU2VsaWMKICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwKICAgICAgb3Bwb3NpdGUgPSBUUlVFLAogICAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjJmfSUiKQogICAgKQogICkgJT4lCiAgIyAtLS0gQ09ORklHVVJBw4fDg08gR0VSQUwgRE8gR1LDgUZJQ08gLS0tCiAgaGNfdGl0bGUodGV4dCA9ICJDb21wYXJhdGl2byBDRFMgUmlzY28tUGHDrXMgZSBUYXhhIFNlbGljIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogSW52ZXN0aW5nLmNvbSBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIpICU+JQogIGhjX3hBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpKSAlPiUKICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAyKSAlPiUKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgLS0tIE1PRElGSUNBw4fDg086IExFR0VOREEgTkEgUEFSVEUgSU5GRVJJT1IgLS0tCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfbGVnZW5kKAogIGVuYWJsZWQgPSBUUlVFLAogIGFsaWduID0gImNlbnRlciIsCiAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCAjIE11ZGFuw6dhIHByaW5jaXBhbCBhcXVpIQogIGxheW91dCA9ICJob3Jpem9udGFsIiwKICB5ID0gMCAjIFBvZGUgc2VyIHVzYWRvIHBhcmEgYWp1c3RhciBhIG1hcmdlbSBpbmZlcmlvciwgc2UgbmVjZXNzw6FyaW8KKSAlPiUKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmhjX3JhbmdlU2VsZWN0b3IoCiAgZW5hYmxlZCA9IFRSVUUsCiAgaW5wdXRFbmFibGVkID0gVFJVRSwKICBidXR0b25zID0gbGlzdCgKICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gNiwgdGV4dCA9ICc2bScpLAogICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEsIHRleHQgPSAnMXknKSwKICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpCiAgKQopICU+JQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIpICU+JQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkgJT4lCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogSW52ZXN0aW5nIGUgQkNCIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCmBgYAoKTyBDcmVkaXQgRGVmYXVsdCBTd2FwIChDRFMpIMOpIHVtIGRlcml2YXRpdm8gcXVlIG1lZGUgbyBjdXN0byBkZSBzZSBwcm90ZWdlciBjb250cmEgbyByaXNjbyBkZSBjYWxvdGUgZGEgZMOtdmlkYSBzb2JlcmFuYS4gRW0gb3V0cmFzIHBhbGF2cmFzLCBlbGUgZnVuY2lvbmEgY29tbyB1bSBzZWd1cm8gY29udHJhIG8gcmlzY28gZGUgY3LDqWRpdG8gZGUgdW0gcGHDrXMuIFF1YW50byBtYWlvciBvIHNwcmVhZCBkbyBDRFMsIG1haW9yIMOpIGEgcGVyY2Vww6fDo28gZGUgcmlzY28gZmlzY2FsIGUgZWNvbsO0bWljbyBlLCBjb25zZXF1ZW50ZW1lbnRlLCBtZW5vciDDqSBvIGFwZXRpdGUgZGUgaW52ZXN0aWRvcmVzIGVzdHJhbmdlaXJvcyBwYXJhIG1hbnRlciBjYXBpdGFsIG5vIHBhw61zLgoKTm8gY2FzbyBkbyBCcmFzaWwsIG8gY29tcG9ydGFtZW50byBkbyBDRFMgZGUgNSBhbm9zLCBtZWRpZG8gZW0gcG9udG9zLWJhc2UgKGJwcyksIG1vc3RyYSB1bWEgY29ycmVsYcOnw6NvIGNsYXJhIGNvbSBhIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgbyBjw6JtYmlvCgpFbSAyMDA4LCBubyBhdWdlIGRhIGNyaXNlIGZpbmFuY2VpcmEgZ2xvYmFsLCBvIENEUyBCcmFzaWwgdWx0cmFwYXNzb3UgNDAwIGJwcywgcmVmbGV0aW5kbyBmb3J0ZSBhdmVyc8OjbyBhbyByaXNjbyBlIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbCAoVVNEL0JSTCBjaGVnb3UgYSBSJCAyLDQwKS4gTmVzc2UgY29udGV4dG8sIGEgU2VsaWMgZXN0YXZhIGVtIDEzLDc1JSwgZSBvIEJhbmNvIENlbnRyYWwgbWFudGV2ZSBqdXJvcyBlbGV2YWRvcyBwYXJhIGV2aXRhciBmdWdhIGRlIGNhcGl0YWlzIGUgY29udGVyIGEgaW5mbGHDp8Ojby4KCkrDoSBlbSAyMDE5LCBjb20gaW5mbGHDp8OjbyBjb250cm9sYWRhLCBjb250YXMgcMO6YmxpY2FzIHJlbGF0aXZhbWVudGUgZXN0w6F2ZWlzIGUgQ0RTIGFiYWl4byBkZSAxMDAgYnBzLCBvIEJDIGNvbnNlZ3VpdSByZWR1emlyIGEgU2VsaWMgcGFyYSA1LDAwJSwgbyBtZW5vciBuw612ZWwgZGEgaGlzdMOzcmlhIGF0w6kgZW50w6NvLgpEdXJhbnRlIGEgcGFuZGVtaWEgZGUgMjAyMCwgbyBDRFMgdm9sdG91IGEgc3ViaXIgZm9ydGVtZW50ZSwgYXRpbmdpbmRvIGNlcmNhIGRlIDMzMCBicHMsIHJlZmxldGluZG8gaW5jZXJ0ZXphIGZpc2NhbCBlIHBvbMOtdGljYS4gTWVzbW8gY29tIG8gcmVhbCB1bHRyYXBhc3NhbmRvIFIkIDUsNjAgcG9yIGTDs2xhciwgbyBCQyByZWR1eml1IHRlbXBvcmFyaWFtZW50ZSBhIFNlbGljIHBhcmEgMiwwMCUsIGRpYW50ZSBkYSByZWNlc3PDo28gZ2xvYmFsLCBtYXMgcHJlY2lzb3UgcmV2ZXJ0ZXIgbyBjaWNsbyBlbSAyMDIxLCBlbGV2YW5kbyBvcyBqdXJvcyBhdMOpIDEzLDc1JSBlbSByZXNwb3N0YSDDoCBkZXRlcmlvcmHDp8OjbyBkbyByaXNjbyBwYcOtcyBlIMOgIGVzY2FsYWRhIGluZmxhY2lvbsOhcmlhLgpFbSAyMDI1LCBvIENEUyBzZSBlc3RhYmlsaXpvdSBuYSBmYWl4YSBkZSAxMzDigJMxNTAgYnBzLCBhaW5kYSBhY2ltYSBkbyBuw612ZWwgcHLDqS1wYW5kZW1pYSwgbW9zdHJhbmRvIHF1ZSBvIG1lcmNhZG8gbWFudMOpbSBjYXV0ZWxhIGNvbSBvIHF1YWRybyBmaXNjYWwgYnJhc2lsZWlyby4KCkVzc2VzIGRhZG9zIGV2aWRlbmNpYW0gcXVlIG8gQ0RTIGZ1bmNpb25hIGNvbW8gdW0gdGVybcO0bWV0cm8gZGEgY3JlZGliaWxpZGFkZSBmaXNjYWwgZSBkYSBjb25maWFuw6dhIGludGVybmFjaW9uYWwuIFF1YW5kbyBvIHJpc2NvIHBhw61zIHNvYmUsIG9zIGludmVzdGlkb3JlcyBleGlnZW0gbWFpb3IgcmV0b3JubyBwYXJhIGZpbmFuY2lhciBvIGdvdmVybm8sIG8gcXVlIHByZXNzaW9uYSBhIGN1cnZhIGRlIGp1cm9zIGUgZGlmaWN1bHRhIGNvcnRlcyBuYSBTZWxpYy4KIFBvciBvdXRybyBsYWRvLCBxdWFuZG8gbyBDRFMgcmVjdWEsIGluZGljYW5kbyBtZW5vciBwZXJjZXDDp8OjbyBkZSByaXNjbywgbyBCYW5jbyBDZW50cmFsIGdhbmhhIGVzcGHDp28gcGFyYSByZWR1emlyIG9zIGp1cm9zIHNlbSBjb21wcm9tZXRlciBhIGVzdGFiaWxpZGFkZSBjYW1iaWFsLkVtIHPDrW50ZXNlLCBvIENEUywgbyBjw6JtYmlvIGUgYSBTZWxpYyBmb3JtYW0gdW0gdHJpw6JuZ3VsbyBkZSBpbnRlcmRlcGVuZMOqbmNpYSBuYSBlY29ub21pYSBicmFzaWxlaXJhOgogCkNEUyBhbHRvIOKGkiBzYcOtZGEgZGUgY2FwaXRhbCDihpIgZMOzbGFyIHNvYmUg4oaSIGluZmxhw6fDo28gcHJlc3Npb25hIOKGkiBTZWxpYyBzb2JlLgoKQ0RTIGJhaXhvIOKGkiBlbnRyYWRhIGRlIGNhcGl0YWwg4oaSIHJlYWwgc2UgdmFsb3JpemEg4oaSIGluZmxhw6fDo28gcmVjdWEg4oaSIFNlbGljIHBvZGUgY2Fpci4KCkFzc2ltLCBvIHJpc2NvIHBhw61zLCBjYXB0YWRvIHBlbG8gQ0RTLCDDqSBuw6NvIGFwZW5hcyB1bSBpbmRpY2Fkb3IgZmluYW5jZWlybywgbWFzIHRhbWLDqW0gdW0gaW5zdHJ1bWVudG8gY3J1Y2lhbCBwYXJhIGFudGVjaXBhciBvcyBtb3ZpbWVudG9zIGRlIHBvbMOtdGljYSBtb25ldMOhcmlhLCBpbmZsdWVuY2lhbmRvIGRpcmV0YW1lbnRlIGFzIHByb2plw6fDtWVzIHBhcmEgbyBkw7NsYXIgZSBhcyBkZWNpc8O1ZXMgZG8gQ29wb20uCgoKIyMgKipDb21tb2RpdGllcyBlIEluZmx1w6puY2lhIG5hIFZhbG9yaXphw6fDo28gZG8gUmVhbCoqCgpgYGB7cn0KbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeShsdWJyaWRhdGUpCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpCmxpYnJhcnkoc3RyaW5ncikKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLSAxLiBMRUlUVVJBIEUgUFJPQ0VTU0FNRU5UTyBERSBEQURPUyAoRVhQT1JUQcOHw4NPKSAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmV4cG9ydF9yYXcgPC0gcmVhZF9kZWxpbSgKICAiRGFkb3MgZXhwb3J0YWNhbyAyMDIwLTIwMjUuY3N2IiwKICBkZWxpbSA9ICI7IiwKICBsb2NhbGUgPSBsb2NhbGUoZW5jb2RpbmcgPSAibGF0aW4xIiksCiAgY29sX3R5cGVzID0gY29scygKICAgIERhdGEgPSBjb2xfY2hhcmFjdGVyKCksCiAgICBFeHBvcnRhY29lcyA9IGNvbF9jaGFyYWN0ZXIoKQogICksCiAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRQopCgpleHBvcnRfcHJvY2Vzc2VkIDwtIGV4cG9ydF9yYXcgJT4lCiAgbXV0YXRlKAogICAgRGF0YSA9IHBhcnNlX2RhdGVfdGltZShEYXRhLCBvcmRlcnMgPSBjKCJZbSIsICJZL20iLCAiWS1tIiksIGxvY2FsZSA9ICJwdF9CUiIpLAogICAgVmFsb3IgPSBnc3ViKCIsIiwgIi4iLCBFeHBvcnRhY29lcyksCiAgICBWYWxvciA9IGFzLm51bWVyaWMoVmFsb3IpLAogICAgVmFsb3JfYmkgPSBWYWxvciAvIDFlOSwKICAgIFRpcG8gPSAiRXhwb3J0YcOnw7VlcyIgCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKERhdGEpICYgIWlzLm5hKFZhbG9yX2JpKSkgJT4lCiAgc2VsZWN0KERhdGEsIFZhbG9yX2JpLCBUaXBvKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDIuIExFSVRVUkEgRSBQUk9DRVNTQU1FTlRPIERFIERBRE9TIChJTVBPUlRBw4fDg08pIC0tLQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW1wb3J0X3JhdyA8LSByZWFkX2RlbGltKAogICJEYWRvcyBpbXBvcnRhY2FvIDIwMjAtMjAyNS5jc3YiLAogIGRlbGltID0gIjsiLAogIGxvY2FsZSA9IGxvY2FsZShlbmNvZGluZyA9ICJsYXRpbjEiKSwKICBjb2xfdHlwZXMgPSBjb2xzKAogICAgRGF0YSA9IGNvbF9jaGFyYWN0ZXIoKSwKICAgIEltcG9ydGFjb2VzID0gY29sX2NoYXJhY3RlcigpCiAgKSwKICBzaG93X2NvbF90eXBlcyA9IEZBTFNFCikKCmltcG9ydF9wcm9jZXNzZWQgPC0gaW1wb3J0X3JhdyAlPiUKICBtdXRhdGUoCiAgICBEYXRhID0gcGFyc2VfZGF0ZV90aW1lKERhdGEsIG9yZGVycyA9IGMoIlltIiwgIlkvbSIsICJZLW0iKSwgbG9jYWxlID0gInB0X0JSIiksCiAgICBWYWxvciA9IGdzdWIoIiwiLCAiLiIsIEltcG9ydGFjb2VzKSwKICAgIFZhbG9yID0gYXMubnVtZXJpYyhWYWxvciksCiAgICBWYWxvcl9iaSA9IFZhbG9yIC8gMWU5LAogICAgVGlwbyA9ICJJbXBvcnRhw6fDtWVzIiAKICApICU+JQogIGZpbHRlcighaXMubmEoRGF0YSkgJiAhaXMubmEoVmFsb3JfYmkpKSAlPiUKICBzZWxlY3QoRGF0YSwgVmFsb3JfYmksIFRpcG8pCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAtLS0gMy4gQ09NQklOQVIgREFET1MgRSBDT05WRVJURVIgUEFSQSBISUdIQ0hBUlRFUiAtLS0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRhZG9zX2NvbWJpbmFkb3MgPC0gYmluZF9yb3dzKGV4cG9ydF9wcm9jZXNzZWQsIGltcG9ydF9wcm9jZXNzZWQpICU+JQogIGFycmFuZ2UoRGF0YSkgJT4lCiAgbXV0YXRlKERhdGEgPSBkYXRldGltZV90b190aW1lc3RhbXAoRGF0YSkpIAoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgLS0tIDQuIENSSUHDh8ODTyBETyBHUsOBRklDTyBDT01CSU5BRE8gLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpjb3JlcyA8LSBjKCJFeHBvcnRhw6fDtWVzIiA9ICIjMDIwMjNDIiwgIkltcG9ydGHDp8O1ZXMiID0gIiNGRkQ3MDAiKQoKaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUKICBoY19hZGRfc2VyaWVzKAogICAgZGF0YSA9IGRhZG9zX2NvbWJpbmFkb3MgJT4lIGZpbHRlcihUaXBvID09ICJFeHBvcnRhw6fDtWVzIiksIAogICAgdHlwZSA9ICJsaW5lIiwgCiAgICBoY2Flcyh4ID0gRGF0YSwgeSA9IFZhbG9yX2JpKSwKICAgIG5hbWUgPSAiRXhwb3J0YcOnw7VlcyIsIAogICAgY29sb3IgPSBjb3Jlc1siRXhwb3J0YcOnw7VlcyJdLCAKICAgIGxpbmVXaWR0aCA9IDMsCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzLCBzeW1ib2wgPSAiY2lyY2xlIikKICApICU+JQogIGhjX2FkZF9zZXJpZXMoCiAgICBkYXRhID0gZGFkb3NfY29tYmluYWRvcyAlPiUgZmlsdGVyKFRpcG8gPT0gIkltcG9ydGHDp8O1ZXMiKSwgCiAgICB0eXBlID0gImxpbmUiLCAKICAgIGhjYWVzKHggPSBEYXRhLCB5ID0gVmFsb3JfYmkpLAogICAgbmFtZSA9ICJJbXBvcnRhw6fDtWVzIiwgCiAgICBjb2xvciA9IGNvcmVzWyJJbXBvcnRhw6fDtWVzIl0sIAogICAgbGluZVdpZHRoID0gMywKICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDMsIHN5bWJvbCA9ICJjaXJjbGUiKQogICkgJT4lCiAgaGNfdGl0bGUodGV4dCA9ICJCYWxhbsOnYSBDb21lcmNpYWwgQnJhc2lsZWlyYTogRXhwb3J0YcOnw7VlcyB2cyBJbXBvcnRhw6fDtWVzICgyMDIwLTIwMjUpIikgJT4lCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb250ZTogU2VjZXgvTURJQyIpICU+JQogIGhjX3hBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIiIpKSAlPiUKICBoY195QXhpcygKICAgICMgLS0tIE1VREFOw4dBIDE6IFJlbW92ZW5kbyBvIHTDrXR1bG8gZG8gRWl4byBZIC0tLQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiIiksCiAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWU6LjFmfSBiaSIpCiAgKSAlPiUKICBoY190b29sdGlwKAogICAgc2hhcmVkID0gVFJVRSwgCiAgICB2YWx1ZURlY2ltYWxzID0gMSwKICAgIHZhbHVlU3VmZml4ID0gIiBiaSBVUyQiCiAgKSAlPiUKICBoY19yYW5nZVNlbGVjdG9yKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBpbnB1dEVuYWJsZWQgPSBUUlVFLAogICAgYnV0dG9ucyA9IGxpc3QoCiAgICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gMywgdGV4dCA9ICczbScpLAogICAgICBsaXN0KHR5cGUgPSAnbW9udGgnLCBjb3VudCA9IDYsIHRleHQgPSAnNm0nKSwKICAgICAgbGlzdCh0eXBlID0gJ3l0ZCcsIHRleHQgPSAnWVREJyksCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAxLCB0ZXh0ID0gJzF5JyksCiAgICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpCiAgICApCiAgKSAlPiUKICAjIC0tLSBNVURBTsOHQSAyOiBJTlNFUsOHw4NPIERBIExFR0VOREEgTkEgQkFTRSAoQk9MSU5IQVMgTk8gRUlYTyBYKSAtLS0KICBoY19sZWdlbmQoCiAgICBlbmFibGVkID0gVFJVRSwKICAgIGFsaWduID0gImNlbnRlciIsCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsICMgUG9zacOnw6NvOiBJbmZlcmlvcgogICAgbGF5b3V0ID0gImhvcml6b250YWwiLAogICAgeSA9IDAKICApICU+JQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IFRSVUUpICU+JQogIGhjX2NoYXJ0KGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIikgJT4lCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUKICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBTZWNleC9NRElDIHwgR3LDoWZpY286IEVsYWJvcmHDp8OjbyBQcsOzcHJpYSIpCmBgYAoKQXMgY29tbW9kaXRpZXMgZGVzZW1wZW5oYW0gcGFwZWwgY2VudHJhbCBuYSBlY29ub21pYSBicmFzaWxlaXJhLCByZXByZXNlbnRhbmRvIHVtYSBwYXJjZWxhIGV4cHJlc3NpdmEgZGFzIGV4cG9ydGHDp8O1ZXMgbmFjaW9uYWlzLiBFbSAyMDI0LCBvcyBwcmluY2lwYWlzIHByb2R1dG9zIGRlIGV4cG9ydGHDp8OjbyBmb3JhbSBjb21idXN0w612ZWlzIG1pbmVyYWlzLCDDs2xlb3MgZSBkZXJpdmFkb3MsIG9sZWFnaW5vc2FzIChjb21vIHNvamEpIGUgbWluw6lyaW9zIOKAlCBzb21hbmRvIGdyYW5kZXMgdm9sdW1lcyBuYXMgcmVjZWl0YXMgZXh0ZXJuYXMgZG8gcGHDrXMuCgpEYWRvcyBkYSBzw6lyaWUg4oCcRXhwb3J0czogQ29tbW9kaXRpZXMgZm9yIEJyYXppbOKAnSBpbmRpY2FtIHF1ZSBvIHZhbG9yIGRhcyBleHBvcnRhw6fDtWVzIGRlIGNvbW1vZGl0aWVzIGJyYXNpbGVpcmFzIGVtIDIwMjQgdWx0cmFwYXNzb3UgVVMkIDMzNyBiaWxow7VlcywgcmVmb3LDp2FuZG8gbyBwZXNvIGRlc3NlIHNldG9yIG5hcyB0cmFuc2HDp8O1ZXMgZXh0ZXJuYXMuIAoKRXNzYSBmb3J0ZSBkZXBlbmTDqm5jaWEgZmF6IGNvbSBxdWUgbyBCcmFzaWwgc2VqYSBmcmVxdWVudGVtZW50ZSBjbGFzc2lmaWNhZG8gY29tbyB1bWEg4oCcY29tbW9kaXR5IGN1cnJlbmN54oCdIOKAlCBvdSBzZWphLCB1bWEgbW9lZGEgY29tIHNlbnNpYmlsaWRhZGUgYW9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgZGFzIG1hdMOpcmlhcy1wcmltYXMuIEVzdHVkb3MgZW1ww61yaWNvcyBtb3N0cmFtIGNvcnJlbGHDp8OjbyBwb3NpdGl2YSBlbnRyZSBvcyDDrW5kaWNlcyBkZSBjb21tb2RpdGllcyBlIGEgdGF4YSBkZSBjw6JtYmlvIEJSTC9VU0Q6IHF1YW5kbyBvcyBwcmXDp29zIGRhcyBjb21tb2RpdGllcyBzb2JlbSwgbyByZWFsIHRlbmRlIGEgc2UgdmFsb3JpemFyOyBxdWFuZG8gY2FlbSwgc29mcmVtIGRlc3ZhbG9yaXphw6fDo28uCgpWYWxvcml6YcOnw6NvIGRhcyBjb21tb2RpdGllcyDihpIgYXVtZW50byBkYXMgcmVjZWl0YXMgZGUgZXhwb3J0YcOnw6NvCiBBbHRhcyBub3MgcHJlw6dvcyBkZSBzb2phLCBtaW7DqXJpbywgcGV0csOzbGVvIGUgb3V0cmFzIG1hdMOpcmlhcy1wcmltYXMgZWxldmFtIGEgYXJyZWNhZGHDp8OjbyBjYW1iaWFsLiBJc3NvIGdlcmEgbWFpb3Igb2ZlcnRhIGRlIGTDs2xhcmVzIG5vIG1lcmNhZG8gZG9tw6lzdGljbywgbyBxdWUgdGVuZGUgYSB2YWxvcml6YXIgbyByZWFsLiBDb20gbyByZWFsIG1haXMgZm9ydGUsIG8gY8OibWJpbyBjb250cmlidWkgcGFyYSBhbGl2aWFyIGEgcHJlc3PDo28gaW5mbGFjaW9uw6FyaWEgaW50ZXJuYS4KCkRlc3ZhbG9yaXphw6fDo28gZGFzIGNvbW1vZGl0aWVzIOKGkiBjb250cmHDp8OjbyBkb3MgZmx1eG9zIGVtIGTDs2xhcmVzCiBRdWFuZG8gb3MgcHJlw6dvcyBkYXMgY29tbW9kaXRpZXMgcmVjdWFtLCBhIGVudHJhZGEgZGUgZMOzbGFyZXMgc2UgcmVkdXouIFBvdWNvIHZvbHVtZSBkZSBkaXZpc2FzIGV4dGVybmFzIGUgbWVub3IgcmVjZWl0YSBjYW1iaWFsIHByZXNzaW9uYW0gbyByZWFsIHBhcmEgYmFpeG8sIG8gcXVlIHBvZGUgYWNlbGVyYXIgbyBtb3ZpbWVudG8gZGUgZGVzdmFsb3JpemHDp8OjbyBjYW1iaWFsLgogCk9zIGltcGFjdG9zIG5hIGluZmxhw6fDo28gZSBuYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBzw6NvIGV2aWRlbnRlcywgcG9pcyBhIGRlc3ZhbG9yaXphw6fDo28gZG8gcmVhbCBlbGV2YSBvIGN1c3RvIGRlIGltcG9ydGFkb3MsIGNvbWJ1c3TDrXZlaXMgZSBpbnN1bW9zIGluZHVzdHJpYWlzLCBlbXB1cnJhbmRvIGEgaW5mbGHDp8OjbyBwYXJhIGNpbWEuIEVzc2UgZWZlaXRvIHByZXNzaW9uYSBvIEJhbmNvIENlbnRyYWwgYSBhanVzdGFyIGEgU2VsaWMgcGFyYSBjaW1hIGNvbW8gcmVzcG9zdGEgcGFyYSBjb250ZXIgbyByZXBhc3NlIGNhbWJpYWwgYW9zIHByZcOnb3MgZG9tw6lzdGljb3MuIAoKRXNzZSB0w7NwaWNvIGRlIGNvbW1vZGl0aWVzIHNlIGludGVncmEgZGlyZXRhbWVudGUgw6AgZGluw6JtaWNhIGRlIHByb2plw6fDtWVzIGRvIGTDs2xhciBlIGRlY2lzw7VlcyBkZSBTZWxpYyBwb3JxdWUgZGVtb25zdHJhIHVtIGNhbmFsIHJlYWwgKGV4dGVybm8pIGRlIGluZmx1w6puY2lhIHNvYnJlIG8gY8OibWJpby4gTyB2YWxvciBkbyByZWFsIG7Do28gw6kgbW9sZGFkbyBhcGVuYXMgcG9yIGp1cm9zIG91IGZsdXhvIGZpbmFuY2Vpcm8sIG1hcyB0YW1iw6ltIHBlbGFzIGZvcsOnYXMgZGUgcHJlw6dvcyBnbG9iYWlzIGRlIGJlbnMgcHJpbcOhcmlvcy4gCgpBc3NpbSwgZW0gY2Vuw6FyaW9zIGRlIGFsdGEgbm9zIHByZcOnb3MgZGUgY29tbW9kaXRpZXMsIG8gcmVhbCBwb2RlIHNlIHZhbG9yaXphciwgZGltaW51aW5kbyBhIG5lY2Vzc2lkYWRlIGRvIEJhbmNvIENlbnRyYWwgZGUgcmVjb3JyZXIgYSBlbGV2YcOnw7VlcyBkcsOhc3RpY2FzIGRhIFNlbGljLiBQb3Igb3V0cm8gbGFkbywgZW0gYW1iaWVudGVzIGRlIHF1ZWRhIGdsb2JhbCBuYXMgY29tbW9kaXRpZXMsIG8gcmlzY28gY2FtYmlhbCBwb2RlIHNlIGFjZWxlcmFyLCBmb3LDp2FuZG8gbyBCQyBhIG1hbnRlciBqdXJvcyBlbGV2YWRvcyBvdSBwb3N0ZXJnYXIgY29ydGVzLCBtZXNtbyBxdWUgb3MgZGFkb3MgZG9tw6lzdGljb3MgcGVybWl0YW0gZmxleGliaWxpemHDp8Ojby4KCgojIyBDb25jbHVzw6NvCkEgYW7DoWxpc2UgaW50ZWdyYWRhIGVudHJlIGPDom1iaW8sIHRheGEgU2VsaWMsIGZsdXhvcyBkZSBjYXBpdGFpcywgZMOtdmlkYSBww7pibGljYSwgcmlzY28tcGHDrXMgKENEUykgZSBtZXJjYWRvIGRlIGNvbW1vZGl0aWVzIGV2aWRlbmNpYSBhIG5hdHVyZXphIG11bHRpZmF0b3JpYWwgZGEgcG9sw610aWNhIG1vbmV0w6FyaWEgYnJhc2lsZWlyYS4gQ2FkYSB1bSBkZXNzZXMgZWxlbWVudG9zIGludGVyYWdlIGRlIGZvcm1hIGRpbsOibWljYSwgZ2VyYW5kbyBlZmVpdG9zIGNydXphZG9zIHF1ZSBjb25kaWNpb25hbSB0YW50byBvIGNvbXBvcnRhbWVudG8gZGEgaW5mbGHDp8OjbyBxdWFudG8gbyBlc3Bhw6dvIGRlIGF0dWHDp8OjbyBkbyBCYW5jbyBDZW50cmFsLgoKQXMgcHJvamXDp8O1ZXMgcGFyYSBvIGTDs2xhciBzw6NvIG8gZWxvIGNlbnRyYWwgZGVzc2EgZW5ncmVuYWdlbS4gQSB2YWxvcml6YcOnw6NvIGRhIG1vZWRhIG5vcnRlLWFtZXJpY2FuYSB0ZW5kZSBhIGVuY2FyZWNlciBpbXBvcnRhZG9zLCBlbGV2YXIgbyBJUENBIGUgZXhpZ2lyIGp1cm9zIG1haXMgYWx0b3MgcGFyYSBhbmNvcmFyIGV4cGVjdGF0aXZhcyBlIGNvbnRlciBhIHNhw61kYSBkZSBjYXBpdGFsIGVzdHJhbmdlaXJvLiBKw6EgYSBhcHJlY2lhw6fDo28gZG8gcmVhbCwgaW1wdWxzaW9uYWRhIHBvciBmbHV4b3MgZXh0ZXJub3MsIG1lbGhvcmEgZmlzY2FsIHRlbXBvcsOhcmlhIG91IGFsdGEgbm9zIHByZcOnb3MgZGFzIGNvbW1vZGl0aWVzLCByZWR1eiBwcmVzc8O1ZXMgaW5mbGFjaW9uw6FyaWFzIGUgY3JpYSBlc3Bhw6dvIHBhcmEgY29ydGVzIGdyYWR1YWlzIGRhIFNlbGljLgoKQW8gbWVzbW8gdGVtcG8sIGEgZMOtdmlkYSBww7pibGljYSBlIG8gQ0RTIGZ1bmNpb25hbSBjb21vIGluZGljYWRvcmVzIGRlIGNyZWRpYmlsaWRhZGUgZmlzY2FsIGUgcGVyY2Vww6fDo28gZGUgcmlzY28uIFVtIGF1bWVudG8gZG8gZW5kaXZpZGFtZW50byBvdSBkbyBwcsOqbWlvIGRlIHJpc2NvIGVsZXZhIGEgZGVzY29uZmlhbsOnYSBkb3MgaW52ZXN0aWRvcmVzLCBwcmVzc2lvbmEgbyBjw6JtYmlvIGUgb2JyaWdhIG8gQmFuY28gQ2VudHJhbCBhIG1hbnRlciB1bWEgcG9zdHVyYSBtYWlzIHJlc3RyaXRpdmEuIFBvciBvdXRybyBsYWRvLCB1bSBjZW7DoXJpbyBkZSBtZWxob3JhIGZpc2NhbCwgZXN0YWJpbGlkYWRlIHBvbMOtdGljYSBlIHRlcm1vcyBkZSB0cm9jYSBmYXZvcsOhdmVpcyBmb3J0YWxlY2UgbyByZWFsIGUgcGVybWl0ZSBtYWlvciBmbGV4aWJpbGlkYWRlIG5hIGNvbmR1w6fDo28gZGEgcG9sw610aWNhIG1vbmV0w6FyaWEuCgpPIG1lcmNhZG8gZGUgY29tbW9kaXRpZXMgYXR1YSBjb21vIGNhbmFsIHJlYWwgZGUgdHJhbnNtaXNzw6NvOiBhbHRhcyBkZSBwcmXDp29zIGZvcnRhbGVjZW0gYSBiYWxhbsOnYSBjb21lcmNpYWwgZSBzdXN0ZW50YW0gYSB2YWxvcml6YcOnw6NvIGNhbWJpYWwsIGVucXVhbnRvIHF1ZWRhcyByZWR1emVtIGEgZW50cmFkYSBkZSBkw7NsYXJlcyBlIHJlYXRpdmFtIHByZXNzw7VlcyBzb2JyZSBvIGPDom1iaW8gZSBvcyBqdXJvcy4gQXNzaW0sIGEgcG9sw610aWNhIG1vbmV0w6FyaWEgYnJhc2lsZWlyYSBwcmVjaXNhIGNvbnN0YW50ZW1lbnRlIGVxdWlsaWJyYXIgdmFyacOhdmVpcyBpbnRlcm5hcyAoaW5mbGHDp8OjbywgYXRpdmlkYWRlLCBkw612aWRhKSBlIGV4dGVybmFzIChGZWQgRnVuZHMsIHByZcOnb3MgZGUgY29tbW9kaXRpZXMsIGZsdXhvIGRlIGNhcGl0YWlzKSBwYXJhIHByZXNlcnZhciBhIGVzdGFiaWxpZGFkZSBtYWNyb2Vjb27DtG1pY2EuCgpFbSBzw61udGVzZSwgbyByZWxhY2lvbmFtZW50byBlbnRyZSBvIGPDom1iaW8gZSBhIFNlbGljIMOpIG8gbsO6Y2xlbyBkYSBwb2zDrXRpY2EgZWNvbsO0bWljYSBubyBCcmFzaWwuIEVsZSB0cmFkdXogYSByZXNwb3N0YSBkbyBwYcOtcyDDoHMgY29uZGnDp8O1ZXMgZ2xvYmFpcyBkZSBsaXF1aWRleiwgw6AgY29uZmlhbsOnYSBmaXNjYWwgZG9tw6lzdGljYSBlIGFvIGFwZXRpdGUgZGUgcmlzY28gZG9zIGludmVzdGlkb3Jlcy4gTWFudGVyIGVzc2UgZXF1aWzDrWJyaW8gZXhpZ2UgY29vcmRlbmHDp8OjbyBlbnRyZSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBlIGZpc2NhbCwgcHJldmlzaWJpbGlkYWRlIGluc3RpdHVjaW9uYWwgZSB2aWdpbMOibmNpYSBjb25zdGFudGUgc29icmUgbyBhbWJpZW50ZSBleHRlcm5vLiDDiSBlc3NhIGludGVyYcOnw6NvICBlbnRyZSBqdXJvcywgY8OibWJpbyBlIGNyZWRpYmlsaWRhZGUgcXVlIGRlZmluaXLDoSBhIGNhcGFjaWRhZGUgZG8gQnJhc2lsIGRlIHN1c3RlbnRhciBjcmVzY2ltZW50byBlc3TDoXZlbCwgaW5mbGHDp8OjbyBjb250cm9sYWRhIGUgY29tcGV0aXRpdmlkYWRlIGludGVybmFjaW9uYWwgbm9zIHByw7N4aW1vcyBhbm9zLgoKCiMjIFJlZmVyw6puY2lhcwpCVEcgUEFDVFVBTC4gQ29udmVyc8OjbyBkbyByZWFsIGVtIGTDs2xhcjogcXVhbCBhIGluZmx1w6puY2lhIGRhIFNlbGljIG5vIGPDom1iaW8gYnJhc2lsZWlyby4gRGlzcG9uw612ZWwgZW06IGh0dHA6Ly9jb250ZW50LmJ0Z3BhY3R1YWwuY29tL2Jsb2cvZW1wcmVzYXMvY29udmVyc2FvLWRvLXJlYWwtZW0tZG9sYXItcXVhbC1hLWluZmx1ZW5jaWEtZGEtc2VsaWMtbm8tY2FtYmlvLWJyYXNpbGVpcm8uIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKQlJBWkFCQU5LLiBUYXhhIFNlbGljIGUgY8OibWJpby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmJyYXphYmFuay5jb20uYnIvY29udGV1ZG8vdGF4YS1zZWxpYy1jYW1iaW8vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkNMVUJFIERPUyBQT1VQQURPUkVTLiBTZWxpYywgZMOzbGFyIGUgaW5mbGHDp8Ojby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vY2x1YmVkb3Nwb3VwYWRvcmVzLmNvbS9zZWxpYy9kb2xhci1pbmZsYWNhby4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCUkFaQUJBTksuIFNlbGljIGEgMTUgJTogRmVkIGNvcnRhIGp1cm9zIOKAlCBpbXBhY3Rvcy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmJyYXphYmFuay5jb20uYnIvY29udGV1ZG8vc2VsaWMtMTUtZmVkLWNvcnRhLWp1cm9zLWltcGFjdG9zLy4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpJTkZPTU9ORVkuIFRheGEgZGUgY8OibWJpby4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmluZm9tb25leS5jb20uYnIvZ3VpYXMvdGF4YS1kZS1jYW1iaW8vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkNOTiBCUkFTSUwuIFNlbSBjb3J0ZSBkZSBnYXN0b3MsIGVjb25vbWlzdGFzIGRpemVtIHF1ZSBqdXJvcyBhbHRvcyBwaW9yYW0gY3Jpc2UgZmlzY2FsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuY25uYnJhc2lsLmNvbS5ici9lY29ub21pYS9tYWNyb2Vjb25vbWlhL3NlbS1jb3J0ZS1kZS1nYXN0b3MtZWNvbm9taXN0YXMtZGl6ZW0tcXVlLWp1cm9zLWFsdG9zLXBpb3JhbS1jcmlzZS1maXNjYWwvLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkFHw4pOQ0lBIEJSQVNJTC4gRMOtdmlkYSBww7pibGljYSBzb2JlIDEyLDIgJSBlbSAyMDI0IGUgc3VwZXJhIFIkIDcsMyB0cmlsaMO1ZXMuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL2FnZW5jaWFicmFzaWwuZWJjLmNvbS5ici9lY29ub21pYS9ub3RpY2lhLzIwMjUtMDIvZGl2aWRhLXB1YmxpY2Etc29iZS0xMjItZW0tMjAyNC1lLXN1cGVyYS1yLTczLXRyaWxob2VzLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkdPVkVSTk8gRE8gQlJBU0lMLiBCcmFzaWwgcmVnaXN0cmEgc3VwZXLDoXZpdCBkZSBVUyQgNiwxIGJpIGVtIGFnb3N0byBlIHJlY29yZGUgZGUgZXhwb3J0YcOnw7VlcyBub3MgcHJpbWVpcm9zIG9pdG8gbWVzZXMgZG8gYW5vLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuZ292LmJyL3NlY29tL3B0LWJyL2Fzc3VudG9zL25vdGljaWFzLzIwMjUvMDkvYnJhc2lsLXJlZ2lzdHJhLXN1cGVyYXZpdC1kZS11cy02LTEtYmktZW0tYWdvc3RvLWUtcmVjb3JkZS1kZS1leHBvcnRhY29lcy1ub3MtcHJpbWVpcm9zLW9pdG8tbWVzZXMtZG8tYW5vLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCklOVkVTVEFMSy4gTyBxdWUgw6kgcmlzY28tcGHDrXMgZSBjb21vIGZ1bmNpb25hIG8gY3JlZGl0IGRlZmF1bHQgc3dhcCAoQ0RTKS4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vaW52ZXN0YWxrLmJiLmNvbS5ici9ub3RpY2lhcy9lY29ub21pYS9vLXF1ZS1lLXJpc2NvLXBhaXMtZS1jb21vLWZ1bmNpb25hLW8tY3JlZGl0LWRlZmF1bHQtc3dhcC1jZHMuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKTUFJUyBSRVRPUk5PLiBDRFMgQnJhc2lsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9tYWlzcmV0b3Juby5jb20vcG9ydGFsL3Rlcm1vcy9jL2Nkcy1icmFzaWwuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIExvY2FsaXphciBzw6lyaWVzIGRvIFNHUy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3My5iY2IuZ292LmJyL3Nnc3B1Yi9sb2NhbGl6YXJzZXJpZXMvbG9jYWxpemFyU2VyaWVzLmRvP21ldGhvZD1wcmVwYXJhclRlbGFMb2NhbGl6YXJTZXJpZXMgQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpJUEVBREFUQS4gU8OpcmllcyBkbyBJcGVhZGF0YTogc8OpcmllIElEIDM4Mzg5LiBEaXNwb27DrXZlbCBlbTogaHR0cDovL2lwZWFkYXRhLmdvdi5ici9leGliZXNlcmllLmFzcHg/c2VyaWQ9MzgzODkuIEFjZXNzbyBlbTogMDYgZGUgb3V0dWJybyBkZSAyMDI1LgoKSU5WRVNUSU5HLkNPTS4gQnJhc2lsIOKAlCBDRFMgZGUgNSBhbm9zIChVU0QpOiBkYWRvcyBoaXN0w7NyaWNvcy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vYnIuaW52ZXN0aW5nLmNvbS9yYXRlcy1ib25kcy9icmF6aWwtY2RzLTUteWVhcnMtdXNkLWhpc3RvcmljYWwtZGF0YS4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCQU5DTyBDRU5UUkFMIC8gRUNPTk9NSUEgKEJyYXNpbCkuIEJhbGFuw6dhIGNvbWVyY2lhbCBlIGNvbW1vZGl0aWVzIOKAlCBzw6lyaWUgbWVuc2FsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9iYWxhbmNhLmVjb25vbWlhLmdvdi5ici9iYWxhbmNhL0lQUS9jb21tb2RpdGllc19tZXMuaHRtbC4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpGRURFUkFMIFJFU0VSVkUgQkFOSyBPRiBTVC4gTE9VSVMgKEZSRUQpLiBTw6lyaWUgREVYQlpVUyDigJQgY8OibWJpbyByZWFsL2TDs2xhci4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vZnJlZC5zdGxvdWlzZmVkLm9yZy9zZXJpZXMvREVYQlpVUy4gQWNlc3NvIGVtOiAwNiBkZSBvdXR1YnJvIGRlIDIwMjUuCgpCUkFTSUwuIENvbWV4VmlzIOKAlCBQb3J0YWwgQ29tZXhTdGF0LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9jb21leHN0YXQubWRpYy5nb3YuYnIvcHQvY29tZXgtdmlzLiBBY2Vzc28gZW06IDA2IGRlIG91dHVicm8gZGUgMjAyNS4KCkJMQU5DSEFSRCwgT2xpdmllci4gTWFjcm9lY29ub21pYS4gNy4gZWQuIFPDo28gUGF1bG86IFBlYXJzb24sIDIwMTcKCg==