17 de agosto de 2021

COMUNICACIÓN


Indicadores de Actividad del Sector Servicios (IASS). Base 2015. Canarias y España.

junio de 2021


La variación mensual de la cifra de negocios del Sector Servicios de Mercado es del 3% en Canarias, frente al 2,3% del conjunto nacional, una vez que se eliminan los efectos estacionales y de calendario

La tasa anual se sitúa en el 23,4% en la serie corregida de efectos estacionales y de calendario, frente al 20,8% en la serie corregida de efectos estacionales y de calendario del conjunto nacional

ANÁLISIS DE LA EVOLUCIÓN MENSUAL

La variación mensual del índice general de la cifra de negocios del Sector Servicios de Mercado entre los meses de junio y mayo, eliminando los efectos estacionales y de calendario, es del 3%. Esta tasa es 1,7 puntos inferior a la de mayo, y 0,7 puntos superior a la del conjunto nacional (2,3%).

Índice general de cifra de negocios del Sector Servicios de Mercado

Corregido de efectos estacionales y de calendario. Tasa mensual. Porcentaje

Si se eliminan los efectos estacionales y de calendario, el Comercio baja un 1,1% y Otros Servicios sube un 3,6%. En el grupo de Otros Servicios, Transporte y almacenamiento (1,2%), Hostelería (5,7%), Información y comunicaciones (1,6%), Actividades profesionales, científicas y técnicas (0,8%), y Actividades administrativas y servicios auxiliares (12,3%).

Índice cifra de negocios: General y por sectores.

Tasa mensual. Porcentaje.

junio de 2021

Canarias
España
Índice original Índice corregido de efectos estacionales y de calendario Índice original Índice corregido de efectos estacionales y de calendario
Índice general 11,8 3,0 8,9 2,3
Comercio 8,9 -1,1 8,0 5,4
Transporte y almacenamiento 6,3 1,2 6,9 5,4
Hostelería 13,1 5,7 21,7 12,8
Información y comunicaciones 5,1 1,6 9,8 1,2
Actividades profesionales científicas y técnicas 14,5 0,8 9,7 0,9
Actividades administrativas y servicios auxiliares 58,0 12,3 13,8 4,4

ANÁLISIS DE LA EVOLUCIÓN ANUAL

El Índice general de cifra de negocios del Sector Servicios de Mercado corregido de efectos estacionales y de calendario experimenta una subida del 23,4% en junio respecto al mismo mes de 2020. Esta tasa es 19,1 puntos inferior a la registrada en mayo, y 2,6 puntos por encima de la registrada a nivel nacional (20,8%). La serie original presenta una variación anual del 24,1%, lo que supone 18,2 puntos por abajo de la registrada en mayo.

Índice general de cifra de negocios del Sector Servicios de Mercado. Canarias y España

Corregido de efectos estacionales y de calendario. Tasa anual. Porcentaje.

Si se eliminan los efectos estacionales y de calendario, el Comercio sube un 9,6% y Otros servicios sube un 62%. En el grupo de Otros Servicios, Transporte y almacenamiento (49,4%), Hostelería (173,5%), Información y comunicaciones (9,1%), Actividades profesionales, científicas y técnicas (5,2%), y Actividades administrativas y servicios auxiliares (81,9%).

Índice cifra de negocios: General y por sectores.

Tasa anual. Porcentaje.

junio de 2021

Canarias
España
Índice original Índice corregido de efectos estacionales y de calendario Índice original Índice corregido de efectos estacionales y de calendario
Índice general 24,1 23,4 21,7 20,8
Comercio 9,8 9,6 18,7 18,5
Transporte y almacenamiento 49,9 49,4 31,0 30,9
Hostelería 169,2 173,5 83,1 83,2
Información y comunicaciones 9,9 9,1 12,8 12,4
Actividades profesionales científicas y técnicas 5,5 5,2 20,7 20,2
Actividades administrativas y servicios auxiliares 111,7 81,9 32,7 32,7

ANÁLISIS COMPARADO POR CCAA

Índices de cifra de negocios

La tasa anual de la cifra de negocios del Sector Servicios de Mercado incrementa respecto a mayo de 2020 en todas las comunidades autónomas. Región de Murcia (7,7%) y Extremadura (13,9%) presentan los menores incrementos, mientras que Islas Baleares (35,4%) y Comunidad de Madrid (27,3%) son las que presenta los mayores crecimientos.

Índices generales cifra de negocios: nacional y por comunidades autónomas. Tasa anual. Porcentaje.

junio de 2021

Índices de ocupación

La tasa anual de ocupación del Sector Servicios de Mercado varía respecto a mayo de 2020 en función de las comunidades autónomas. Canarias (-1,3%) y Extremadura (2%) presentan los mayores descensos, mientras que Islas Baleares (5,8%) y Castilla - La Mancha (5,3%) son las que presenta los mayores crecimientos.

Índices generales de ocupación: nacional y por comunidades autónomas. Tasa anual. Porcentaje.

junio de 2021

REVISIONES Y ACTUALIZACIÓN DE DATOS

Se han actualizado los datos de las series de IASS correspondientes a los cinco últimos meses. En el caso de las series ajustadas de calendario y desestacionalizadas y ajustadas de calendario, siguiendo el estándar del INE se revisa la serie desde su comienzo.

NOTA METODOLÓGICA

La información de base de este indicador procede de una encuesta mensual a empresas que realiza el Instituto Nacional de Estadística (INE) y que recibe el ISTAC mediante acuerdo de intercambio de información entre ambos organismos para la publicación de un mayor detalle en la comunidad autónoma.

Este informe anticipa los trabajos que estamos desarrollando en el marco del proyecto “Métodos econométricos aplicados a series de coyuntura económica ECOMAC (MAC/5.11.a/004)”, realizado en colaboración con las oficinas de estadísticas de Azores y Madeira y financiado por el Programa de Cooperación INTERREG V-A España-Portugal MAC (Madeira-Azores-Canarias) 2014-2020.

El objetivo principal de este proyecto es la construcción de modelos econométricos que permitan ajustar las series de los principales indicadores de la coyuntura de los efectos de calendario y de la estacionalidad. Los resultados presentados en este informe permiten adelantar los trabajos que estamos desarrollando y que serán publicados a finales de 2020.

Más información

ISTAC - Comunicación

www.gobiernodecanarias.org/istac/noticias

922 92 28 41 - 928 29 32 71

@istac_es

Logo MAC - INTERREG

LS0tCnRpdGxlOiAnICcKcGFnZXRpdGxlOiBDb211bmljYWNpw7NuIElBU1MgMjAyMU0wNgpwYXJhbXM6CiAgZmVjaGE6IDE3IGRlIGFnb3N0byBkZSAyMDIxCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBJbmZvcm1lX0lBU1MuY3NzCiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgY3NzOiBJbmZvcm1lX0lBU1MuY3NzCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLSAgIApgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShmbGV4ZGFzaGJvYXJkKQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFKQpgYGAKCjxkaXYgY2xhc3M9ImxvZ28taXN0YWMiPiAKICA8aW1nIHNyYz0iLi4vaW1hZ2VzL2xvZ29faXN0YWMuanBnIiAvPgo8L2Rpdj4KYGBge3IgaW5jbHVkZT1GQUxTRSwgd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpvcHRpb25zKHNjaXBlbiA9IDk5OSkKCmxpYnJhcnkoeGxzeCkKbGlicmFyeShrbml0cikKbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KHBseXIpCmxpYnJhcnkoem9vKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocGxvdGx5KQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkoanNvbmxpdGUpCgpzb3VyY2UoIi4uL3Njci9GdW5jdGlvbnMuUiIpCgojIExFQ1RVUkEgREUgREFUT1MgSlNPTiBERSBMQSBBUEkgREVMIElORQojIMONbmRpY2UgZ2VuZXJhbCBkZSBDaWZyYXMgZGUgTmVnb2Npb3MgTmFjaW9uYWwgeSBwb3IgQ0NBQQpDTl9qc29uIDwtIGZyb21KU09OKCJodHRwczovL3NlcnZpY2lvcy5pbmUuZXMvd3N0ZW1wdXMvanMvRVMvREFUT1NfVEFCTEEvMjU4OTc/ZGF0ZT0yMDE5MDEwMToiKQojIMONbmRpY2UgZGUgQ2lmcmFzIGRlIE5lZ29jaW9zIGFqdXN0YWRvIGRlIGVzdGFjaW9uYWxpZGFkIHkgY2FsZW5kYXJpbyBFUyAoSS4gZ2VuZXJhbCB5IHNlY3RvcmVzKQpDTl9zYWNfanNvbiA8LSBmcm9tSlNPTigiaHR0cHM6Ly9zZXJ2aWNpb3MuaW5lLmVzL3dzdGVtcHVzL2pzL0VTL0RBVE9TX1RBQkxBLzI1ODkzP2RhdGU9MjAxOTAxMDE6IikKIyDDjW5kaWNlIGRlIENpZnJhcyBkZSBOZWdvY2lvcyBFUyAoSS4gZ2VuZXJhbCB5IHNlY3RvcmVzKQpDTl9zZWN0b3Jlc19qc29uIDwtIGZyb21KU09OKCJodHRwczovL3NlcnZpY2lvcy5pbmUuZXMvd3N0ZW1wdXMvanMvRVMvREFUT1NfVEFCTEEvMjU4OTE/ZGF0ZT0yMDE5MDEwMToiKQojIMONbmRpY2UgZGUgT2N1cGFjacOzbiBhanVzdGFkbyBkZSBlc3RhY2lvbmFsaWRhZCBwb3IgQ0NBQQpPQ19qc29uIDwtIGZyb21KU09OKCJodHRwczovL3NlcnZpY2lvcy5pbmUuZXMvd3N0ZW1wdXMvanMvRVMvREFUT1NfVEFCTEEvMjU4OTk/ZGF0ZT0yMDE5MDEwMToiKQoKCgojIEVYVFJBQ0NJw5NOIERFIExPUyBEQVRBLkZSQU1FIERFIExPUyBKU09OCkNOIDwtIEV4dHJhY3RfZGYoQ05fanNvbikKQ05fc2FjIDwtIEV4dHJhY3RfZGYoQ05fc2FjX2pzb24pICU+JSBmaWx0ZXIoU2VjdG9yICVpbiUgYygiVG90YWwgc2VydmljaW9zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tZXJjaW8gYWwgcG9yIG1heW9yIHkgYWwgcG9yIG1lbm9yOyByZXBhcmFjacOzbiBkZSB2ZWjDrWN1bG9zIGRlIG1vdG9yIHkgbW90b2NpY2xldGFzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9zdGVsZXLDrWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMsIGNpZW50w61maWNhcyB5IHTDqWNuaWNhcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2aWRhZGVzIGFkbWluaXN0cmF0aXZhcyB5IHNlcnZpY2lvcyBhdXhpbGlhcmVzIikpCgpDTl9zZWN0b3JlcyA8LSBFeHRyYWN0X2RmKENOX3NlY3RvcmVzX2pzb24pJT4lIGZpbHRlcihTZWN0b3IgJWluJSBjKCJUb3RhbCBzZXJ2aWNpb3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3N0ZWxlcsOtYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcywgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKSkKT0MgPC0gRXh0cmFjdF9kZihPQ19qc29uKQoKIyBDw4FMQ1VMTyBERSBMQVMgVEFTQVMKIyBUVkEKWV9UVkEgPC0gY2JpbmQoYXMuRGF0ZShZJEZFQ0hBKSxhcy5kYXRhLmZyYW1lKFRWQShzdWJzZXQoWSxzZWxlY3QgPSAtRkVDSEEpLDEyKSkpCmNvbG5hbWVzKFlfVFZBKSA8LSBjb2xuYW1lcyhZKQoKIyBUVk0KWV9UVk0gPC0gY2JpbmQoYXMuRGF0ZShZJEZFQ0hBKSxhcy5kYXRhLmZyYW1lKFRWTShzdWJzZXQoWSxzZWxlY3QgPSAtRkVDSEEpKSkpCmNvbG5hbWVzKFlfVFZNKSA8LSBjb2xuYW1lcyhZKQoKIyBMZW5ndGgKbiA8LSBucm93KGZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIG1lbnN1YWwiKSkKCiMgRmVjaGEKbWVzIDwtIGZvcm1hdChhcy55ZWFybW9uKHRpbWUoWVssMl0pW25yb3coWSldKSwiJUIiKQptZXNfcHJldiA8LSBmb3JtYXQoYXMueWVhcm1vbih0aW1lKFlbLDJdKVtucm93KFkpLTFdKSwiJUIiKQphbnlvIDwtIGZvcm1hdChhcy55ZWFybW9uKHRpbWUoWVssMl0pW25yb3coWSldKSwiJVkiKQphbnlvX3ByZXYgPC0gZm9ybWF0KGFzLnllYXJtb24odGltZShZWywyXSlbbnJvdyhZKS0xMl0pLCIlWSIpCgpgYGAKCjxkaXYgY2xhc3M9InRpdGxlLWNvbnRhaW5lciI+CiAgPHNwYW4gY2xhc3M9ImRhdGUiPioqYHIgcGFyYW1zJGZlY2hhYCoqPC9zcGFuPgogIDxoMT4qKkNPTVVOSUNBQ0nDk04qKjwvaDE+CjwvZGl2PgoqKioKPGgyPgogIEluZGljYWRvcmVzIGRlIEFjdGl2aWRhZCBkZWwgU2VjdG9yIFNlcnZpY2lvcyAoSUFTUykuIEJhc2UgMjAxNS4gQ2FuYXJpYXMgeSBFc3Bhw7FhLiA8ZGl2IGNsYXNzPSJsZXQiPjxwPiAqKmByIE1lc19ub21icmUoQ04kTUVTW25yb3coQ04pXSlgIGRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqICA8L3A+PC9kaXY+CjwvaDI+CioqKgo8aDIgc3R5bGU9Im1hcmdpbi10b3A6IDkwcHg7IiBjbGFzcz0iY2VudGVyZWQiPiAqKkxhIHZhcmlhY2nDs24gbWVuc3VhbCBkZSBsYSBjaWZyYSBkZSBuZWdvY2lvcyBkZWwgU2VjdG9yIFNlcnZpY2lvcyBkZSBNZXJjYWRvIGVzIGRlbCBgciBmb3JtYXQocm91bmQoWV9UVk0kSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVk0pXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBlbiBDYW5hcmlhcywgZnJlbnRlIGFsIGByICBmb3JtYXQocm91bmQoZmlsdGVyKENOX3NhYywgU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiICYgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gbWVuc3VhbCIpJFZBTE9SW25dLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlIGRlbCBjb25qdW50byBuYWNpb25hbCwgdW5hIHZleiBxdWUgc2UgZWxpbWluYW4gbG9zIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyAqKjwvaDI+IAoKPGgyIHN0eWxlPSJtYXJnaW4tdG9wOiAzMHB4OyIgY2xhc3M9ImNlbnRlcmVkIj4gKipMYSB0YXNhIGFudWFsIHNlIHNpdMO6YSBlbiBlbCBgciBmb3JtYXQocm91bmQoWV9UVkEkSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBlbiBsYSBzZXJpZSBjb3JyZWdpZGEgZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvLCBmcmVudGUgYWwgYHIgZm9ybWF0KHJvdW5kKGZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIGFudWFsIikkVkFMT1Jbbl0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUgZW4gbGEgc2VyaWUgY29ycmVnaWRhIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyBkZWwgY29uanVudG8gbmFjaW9uYWwgKio8L2gyPiAKCgo8ZGl2IGNsYXNzPSJib3hCb3JkZXIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+CiAgKipBTsOBTElTSVMgREUgTEEgRVZPTFVDScOTTiBNRU5TVUFMKioKPC9wPjwvZGl2PgoKPHA+TGEgdmFyaWFjacOzbiBtZW5zdWFsIGRlbCDDrW5kaWNlIGdlbmVyYWwgZGUgbGEgY2lmcmEgZGUgbmVnb2Npb3MgZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUKTWVyY2FkbyBlbnRyZSBsb3MgbWVzZXMgZGUgYHIgbWVzYCB5IGByIG1lc19wcmV2YCwgZWxpbWluYW5kbyBsb3MgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSAKY2FsZW5kYXJpbywgZXMgZGVsIGByIGZvcm1hdChyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlLiBFc3RhIHRhc2EgZXMgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLVlfVFZNJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZNKS0xXSwxKSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCBwdW50b3MgYHIgc3VwX2luZihyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLVlfVFZNJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZNKS0xXSwxKSlgIGEgbGEgZGUgYHIgbWVzX3ByZXZgLCB5IGByIGZvcm1hdChhYnMocm91bmQoWV9UVk0kSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVk0pXS1yb3VuZChmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSksMSkpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAgcHVudG9zCmByIHN1cF9pbmYocm91bmQoWV9UVk0kSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVk0pXS1maWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSkpYCBhIGxhIGRlbCBjb25qdW50byBuYWNpb25hbCAoYHIgIGZvcm1hdChyb3VuZChmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLjwvcD4KCjxoMz4gKirDjW5kaWNlIGdlbmVyYWwgZGUgY2lmcmEgZGUgbmVnb2Npb3MgZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUgTWVyY2FkbyoqCiAgPHA+Q29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpby4gVGFzYSBtZW5zdWFsLiBQb3JjZW50YWplPC9wPgo8L2gzPgoKYGBge3IgZWNobyA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZT1GQUxTRSwgb3V0LndpZHRoPSIxMDAlIn0KRVNQIDwtIGZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIG1lbnN1YWwiKQpFU1AgPC0gc3Vic2V0KEVTUCwgc2VsZWN0ID0gYyhHRU8sTUVTLEFOWU8sVkFMT1IpICkKRVNQJEdFTyA8LSAiRXNwYcOxYSIKQ0FOIDwtIGNiaW5kKEdFTyA9ICJDYW5hcmlhcyIsTUVTID0gRVNQJE1FUyxBTllPID0gRVNQJEFOWU8sVkFMT1IgPSBZX1RWTVsobnJvdyhZX1RWTSktbnJvdyhFU1ApKzEpOm5yb3coWV9UVk0pLCJJTkRJQ0UuR0VORVJBTF9TQUMiXSkKCkVTUCA8LSBFU1BbKG5yb3coRVNQKS0xMik6bnJvdyhFU1ApLF0KQ0FOIDwtIENBTlsobnJvdyhDQU4pLTEyKTpucm93KENBTiksXQoKRGF0YSA8LSByYmluZChFU1AsQ0FOKQoKRGF0YSRWQUxPUiA8LXJvdW5kKGFzLm51bWVyaWMoRGF0YSRWQUxPUiksMSkKRGF0YSA8LSByZW5hbWUoRGF0YSwgVmFsb3IgPSBWQUxPUikKCkZlY2hhIDwtIGFzLmZhY3Rvcihmb3JtYXQoYXMueWVhcm1vbihZX1RWQVsobnJvdyhZX1RWQSktbnJvdyhFU1ApKzEpOm5yb3coWV9UVkEpLCJGRUNIQSJdKSwiJWIgJVkiKSkKCkRhdGEgPC0gY2JpbmQoRGF0YSxGZWNoYSA9IEZlY2hhKQoKRGF0YTIgPC0gRGF0YSAKRGF0YTJbRGF0YSRBTllPICE9IENOJEFOWU9bbnJvdyhDTildIHwgRGF0YSRNRVMgIT0gQ04kTUVTW25yb3coQ04pXSxdJFZhbG9yIDwtTkEKZm9yIChpIGluIDE6bnJvdyhEYXRhMikpewogIGlmIChpcy5uYShEYXRhMiRWYWxvcltpXSk9PUYpe0RhdGEyJFZhbG9yW2ldPC1wYXN0ZTAoRGF0YTIkVmFsb3JbaV0sIiAlIil9Cn0KCkRhdGEgPC0gRGF0YSAlPiUgbXV0YXRlKExhYmVsID0gVmFsb3IpCkRhdGFbRGF0YSRBTllPICE9IENOJEFOWU9bbnJvdyhDTildIHwgRGF0YSRNRVMgIT0gQ04kTUVTW25yb3coQ04pXSxdJExhYmVsIDwtTkEKZm9yIChpIGluIDE6bnJvdyhEYXRhKSl7CiAgaWYgKGlzLm5hKERhdGEkTGFiZWxbaV0pPT1GKXtEYXRhJExhYmVsW2ldPC1wYXN0ZTAoRGF0YSRWYWxvcltpXSwiICUiKX0KfQoKRGF0YSRGZWNoYSA8LSBmYWN0b3IoRGF0YSRGZWNoYSwgbGV2ZWxzID0gIHVuaXF1ZShEYXRhJEZlY2hhKSkKCnAgPC0gZ2dwbG90KGRhdGEgPSBEYXRhLCBhZXMoeCA9IEZlY2hhLCB5ID0gVmFsb3IsIGdyb3VwID0gR0VPLCBmaWxsID0gR0VPLCB0ZXh0ID0gcGFzdGUwKCJUZXJyaXRvcmlvOiAiLEdFTywgIjxicj5GZWNoYTogIixGZWNoYSwiPGJyPlRhc2EgTWVuc3VhbDogIixwYXN0ZTAoVmFsb3IsIiUiKSkpKSsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uPSJkb2RnZSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHlsYWIoIiAiKSArCiAgeGxhYigiICIpICsKICBsYWJzKGNvbG91ciA9ICIgIikgKwogIGd1aWRlcyhmaWxsID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIiAiKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yNSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJFc3Bhw7FhIj0iIzdCMjQxQyIsIkNhbmFyaWFzIj0iIzAwOGJkMCIpKSsKICB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGU9OTApLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSkrIAogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCB2anVzdCA9ICJlbmUgMjAxOSIsIGZhY2UgPSAiYm9sZCIpKQoKZ2dwbG90bHkocCwgdG9vbHRpcCA9ICJ0ZXh0IikgJT4lCiAgY29uZmlnKGRpc3BsYXlsb2dvID0gRkFMU0UsIG1vZGVCYXJCdXR0b25zID0gbGlzdChsaXN0KCJ6b29tMmQiKSxsaXN0KCJwYW4yZCIpLGxpc3QoInJlc2V0U2NhbGUyZCIpLGxpc3QoInRvSW1hZ2UiKSkpICU+JQogIGxheW91dChob3Zlcm1vZGUgPSAneCB1bmlmaWVkJykgJT4lIAogIGFkZF9hbm5vdGF0aW9ucyh4ID0gKG5yb3coRGF0YSkvMikrMC4yKnNpZ24oRGF0YSRWYWxvcltucm93KERhdGEpXSktMC40LAogICAgICAgICAgICAgICAgICB5ID0gRGF0YSRWYWxvcltucm93KERhdGEpXSsxKnNpZ24oRGF0YSRWYWxvcltucm93KERhdGEpXSkrMC41LAogICAgICAgICAgICAgICAgICB0ZXh0ID0gcGFzdGUwKERhdGEkVmFsb3JbbnJvdyhEYXRhKV0sIiUiKSwKICAgICAgICAgICAgICAgICAgeHJlZiA9ICJ4IiwKICAgICAgICAgICAgICAgICAgeXJlZiA9ICJ5IiwKICAgICAgICAgICAgICAgICAgc2hvd2Fycm93ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgIGZvbnQgPSBsaXN0KGNvbG9yID0gIiMwMDhiZDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAnc2FucyBzZXJpZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAxMikKICAgICAgICAgICAgICAgICAgKSU+JSAKICBhZGRfYW5ub3RhdGlvbnMoeCA9IChucm93KERhdGEpLzIpKzAuMypzaWduKERhdGEkVmFsb3JbbnJvdyhEYXRhKS8yXSksCiAgICAgICAgICAgICAgICAgIHkgPSBEYXRhJFZhbG9yW25yb3coRGF0YSkvMl0rMSpzaWduKERhdGEkVmFsb3JbbnJvdyhEYXRhKS8yXSksCiAgICAgICAgICAgICAgICAgIHRleHQgPSBwYXN0ZTAoRGF0YSRWYWxvcltucm93KERhdGEpLzJdLCIlIiksCiAgICAgICAgICAgICAgICAgIHhyZWYgPSAieCIsCiAgICAgICAgICAgICAgICAgIHlyZWYgPSAieSIsCiAgICAgICAgICAgICAgICAgIHNob3dhcnJvdyA9IEZBTFNFLAogICAgICAgICAgICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICIjN0IyNDFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gJ3NhbnMgc2VyaWYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMTIpKQoKCmBgYAoKPHAgc3R5bGU9Im1hcmdpbi10b3A6IDcwcHg7Ij4gU2kgc2UgZWxpbWluYW4gbG9zIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbywgZWwgQ29tZXJjaW8gYHIgYmFqYV9zdWJlKFlfVFZNJENPTUVSQ0lPX1NBQ1tucm93KFlfVFZNKV0pYCB1biBgciBmb3JtYXQocm91bmQoYWJzKFlfVFZNJENPTUVSQ0lPX1NBQ1tucm93KFlfVFZNKV0pLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlIHkgT3Ryb3MgU2VydmljaW9zIGByIGJhamFfc3ViZShZX1RWTSRPVFJPUy5TRVJWSUNJT1NfU0FDW25yb3coWV9UVk0pXSlgIHVuIGByIGZvcm1hdChyb3VuZChZX1RWTSRPVFJPUy5TRVJWSUNJT1NfU0FDW25yb3coWV9UVk0pXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJS4gRW4gZWwgZ3J1cG8gZGUgT3Ryb3MgU2VydmljaW9zLCBUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8gKGByIGZvcm1hdChyb3VuZChZX1RWTSRUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE9fU0FDW25yb3coWV9UVk0pXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIEhvc3RlbGVyw61hIChgciBmb3JtYXQocm91bmQoWV9UVk0kSE9TVEVMRVJJQV9TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgSW5mb3JtYWNpw7NuIHkgY29tdW5pY2FjaW9uZXMgKGByIGZvcm1hdChyb3VuZChZX1RWTSRJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTX1NBQ1tucm93KFlfVFZNKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLCBBY3RpdmlkYWRlcyBwcm9mZXNpb25hbGVzLCBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMgKGByIGZvcm1hdChyb3VuZChZX1RWTSRBQ1RJVklEQURFUy5QUk9GRVNJT05BTEVTLkNJRU5USUZJQ0FTLlkuVEVDTklDQVNfU0FDW25yb3coWV9UVk0pXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIHkgQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMgKGByIGZvcm1hdChyb3VuZChZX1RWTSRBQ1RJVklEQURFUy5BRE1JTklTVFJBVElWQVMuWS5TRVJWSUNJT1MuQVVYSUxJQVJFU19TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKS4KPC9wPgoKPGgzPiAqKsONbmRpY2UgY2lmcmEgZGUgbmVnb2Npb3M6IEdlbmVyYWwgeSBwb3Igc2VjdG9yZXMuKioKICA8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogLTVweCI+VGFzYSBtZW5zdWFsLiBQb3JjZW50YWplLjwvcD4gCiAgPGRpdiBjbGFzcz0ibGV0Ij48cD5gciBNZXNfbm9tYnJlKENOJE1FU1tucm93KENOKV0pYCBkZSBgciBDTiRBTllPW25yb3coQ04pXWAgIDwvcD48L2Rpdj4KPC9oMz4KCmBgYHtyIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdhc2lzJywgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkYXRhIDwtIHN1YnNldChZX1RWTVtucm93KFlfVFZNKSxdLHNlbGVjdCA9IGMoIklORElDRS5HRU5FUkFMIiwiQ09NRVJDSU8iLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE8iICAsIkhPU1RFTEVSSUEiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTIiwiQUNUSVZJREFERVMuQURNSU5JU1RSQVRJVkFTLlkuU0VSVklDSU9TLkFVWElMSUFSRVMiKSkKY29sbmFtZXMoZGF0YSkgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcyBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMiLCJBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyIpCmRhdGEgPC0gdChyb3VuZChkYXRhLDEpKQpkYXRhX3NhYyA8LSBzdWJzZXQoWV9UVk1bbnJvdyhZX1RWTSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTF9TQUMiLCJDT01FUkNJT19TQUMiLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE9fU0FDIiAgLCJIT1NURUxFUklBX1NBQyIsIklORk9STUFDSU9OLlkuQ09NVU5JQ0FDSU9ORVNfU0FDIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTX1NBQyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTX1NBQyIpKQpjb2xuYW1lcyhkYXRhX3NhYykgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcywgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhX3NhYyA8LSB0KHJvdW5kKGRhdGFfc2FjLDEpKQoKREFUQSA8LSBjYmluZChkYXRhLGRhdGFfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCIiLCIiKQoKRVNQX3NhYyA8LSBmaWx0ZXIoQ05fc2FjLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIiAmIAogICAgICAgICAgICAgICAgICAgICAgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09Q04kQU5ZT1tucm93KENOKV0pCiMgUmVjb2RpZmljYW1vcyBsb3Mgc2VjdG9yZXMgcGFyYSBxdWUgY29pbmNpZGFuIGxvcyBub21icmVzCkVTUF9zYWNbRVNQX3NhYyRTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIsXSRTZWN0b3IgPC0gYXMuY2hhcmFjdGVyKCLDjW5kaWNlIGdlbmVyYWwiKQpFU1Bfc2FjW0VTUF9zYWMkU2VjdG9yID09ICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3RlcigiQ29tZXJjaW8iKQoKcm93bmFtZXMoRVNQX3NhYykgPC0gRVNQX3NhYyRTZWN0b3IKRVNQX3NhYyA8LSBzdWJzZXQoRVNQX3NhYywgc2VsZWN0ID0gYyhWQUxPUikpCmNvbG5hbWVzKEVTUF9zYWMpIDwtIGMoIiIpCgpFU1AgPC0gZmlsdGVyKENOX3NlY3RvcmVzLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIiAmIAogICAgICAgICAgICAgICAgICAgICAgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09Q04kQU5ZT1tucm93KENOKV0pIAojIFJlY29kaWZpY2Ftb3MgbG9zIHNlY3RvcmVzIHBhcmEgcXVlIGNvaW5jaWRhbiBsb3Mgbm9tYnJlcwpFU1BbRVNQJFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIixdJFNlY3RvciA8LSBhcy5jaGFyYWN0ZXIoIsONbmRpY2UgZ2VuZXJhbCIpCkVTUFtFU1AkU2VjdG9yID09ICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3RlcigiQ29tZXJjaW8iKQoKcm93bmFtZXMoRVNQKSA8LSBFU1AkU2VjdG9yCkVTUCA8LSBzdWJzZXQoRVNQLCBzZWxlY3QgPSBjKFZBTE9SKSkKY29sbmFtZXMoRVNQKSA8LSBjKCIiKQoKREFUQSA8LSBjYmluZChEQVRBLEVTUCxFU1Bfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCLDjW5kaWNlIG9yaWdpbmFsIiwgIsONbmRpY2UgY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyIsCiAgICAgICAgICAgICAgICAgICAgIsONbmRpY2Ugb3JpZ2luYWwiLCAiw41uZGljZSBjb3JyZWdpZG8gZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIikKYGBgCgo8dGFibGUgY2xhc3M9Im15LXRhYmxlIj4KPHRoZWFkPgo8dHI+Cjx0aD48L3RoPgo8dGggY29sc3Bhbj0iMiI+Q2FuYXJpYXM8L3RoPgo8dGggY29sc3Bhbj0iMiI+PGRpdiBzdHlsZT0iIj5Fc3Bhw7FhPC9kaXY+PC90aD4KPC90cj4KPHRyPgogICA8dGg+PC90aD4KICAgPHRoPiDDjW5kaWNlIG9yaWdpbmFsIDwvdGg+CiAgIDx0aD4gw41uZGljZSBjb3JyZWdpZG8gZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIDwvdGg+CiAgIDx0aD4gw41uZGljZSBvcmlnaW5hbCA8L3RoPgogICA8dGg+IMONbmRpY2UgY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyA8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5PgpgYGB7ciBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAgImFzaXMifQpEQVRBIDwtIGZvcm1hdChEQVRBLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKQppIDwtIDEKZmlyc3Rfcm93X3RlbXBsYXRlID0gJzx0ciBjbGFzcz0iaGlnaGxpZ2h0LXJvdyI+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjx0ZD4lczwvdGQ+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjwvdHI+JwpjYXQoc3ByaW50ZihmaXJzdF9yb3dfdGVtcGxhdGUsIAogICAgICAgICAgICByb3duYW1lcyhEQVRBKVtpXSwgREFUQVtpLCAxXSwgREFUQVtpLCAyXSwgREFUQVtpLCAzXSwgREFUQVtpLCA0XSkpCnRlbXBsYXRlIDwtICc8dHI+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjx0ZD4lczwvdGQ+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjwvdHI+Jwpmb3IgKGkgaW4gMjpucm93KERBVEEpKSB7CiAgY2F0KHNwcmludGYodGVtcGxhdGUsIHJvd25hbWVzKERBVEEpW2ldLCBEQVRBW2ksIDFdLCBEQVRBW2ksIDJdLCBEQVRBW2ksIDNdLCBEQVRBW2ksIDRdKSkKfQpgYGAKPC90Ym9keT4KPC90YWJsZT4KCjxkaXYgY2xhc3M9ImJveEJvcmRlciI+PHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KICAqKkFOw4FMSVNJUyBERSBMQSBFVk9MVUNJw5NOIEFOVUFMKioKPC9wPjwvZGl2PgoKPHA+RWwgw41uZGljZSBnZW5lcmFsIGRlIGNpZnJhIGRlIG5lZ29jaW9zIGRlbCBTZWN0b3IgU2VydmljaW9zIGRlIE1lcmNhZG8gY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyBleHBlcmltZW50YSB1bmEgYHIgY2FpZGFfc3ViaWRhKFlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKV0pYCBkZWwgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLDEpKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBlbiBgciBtZXNgIHJlc3BlY3RvIGFsIG1pc21vIG1lcyBkZSBgciBhbnlvX3ByZXZgLiBFc3RhIHRhc2EgZXMgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKS0xXSwxKSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCBwdW50b3MgYHIgc3VwX2luZihyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKS0xXSwxKSlgIGEgbGEgcmVnaXN0cmFkYSBlbiBgciBtZXNfcHJldmAsIHkgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLWZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIGFudWFsIikkVkFMT1Jbbl0sMSkpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAgcHVudG9zIHBvciBgciBhYmFqb19lbmNpbWEoWV9UVkEkSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVkEpXS1maWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIpJFZBTE9SW25dKWAgZGUgbGEgcmVnaXN0cmFkYSBhIG5pdmVsIG5hY2lvbmFsIChgciBmb3JtYXQoZmlsdGVyKENOX3NhYywgU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiICYgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gYW51YWwiKSRWQUxPUltuXSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkuIExhIHNlcmllIG9yaWdpbmFsIHByZXNlbnRhIHVuYSB2YXJpYWNpw7NuIGFudWFsIGRlbCBgciAgZm9ybWF0KHJvdW5kKFlfVFZBJElORElDRS5HRU5FUkFMW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSwgbG8gcXVlIHN1cG9uZSBgciAgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTFtucm93KFlfVFZBKV0tWV9UVkEkSU5ESUNFLkdFTkVSQUxbbnJvdyhZX1RWQSktMV0sMSkpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAgcHVudG9zIHBvciBgciBhYmFqb19lbmNpbWEoWV9UVkEkSU5ESUNFLkdFTkVSQUxbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMW25yb3coWV9UVkEpLTFdKWAgZGUgbGEgcmVnaXN0cmFkYSBlbiBgciBtZXNfcHJldmAuPC9wPgoKIDxoMz4KICAqKsONbmRpY2UgZ2VuZXJhbCBkZSBjaWZyYSBkZSBuZWdvY2lvcyBkZWwgU2VjdG9yIFNlcnZpY2lvcyBkZSBNZXJjYWRvLiBDYW5hcmlhcyB5IEVzcGHDsWEqKgogIDxwPkNvcnJlZ2lkbyBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8uIFRhc2EgYW51YWwuIFBvcmNlbnRhamUuPC9wPgo8L2gzPiAKCmBgYHtyIGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2LCB3YXJuaW5nID0gRkFMU0V9CkVTUCA8LSBmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIpCkVTUCA8LSBzdWJzZXQoRVNQLCBzZWxlY3QgPSBjKEdFTyxNRVMsQU5ZTyxWQUxPUikgKQpFU1AkR0VPIDwtICJFc3Bhw7FhIgpDQU4gPC0gY2JpbmQoR0VPID0gIkNhbmFyaWFzIixNRVMgPSBFU1AkTUVTLEFOWU8gPSBFU1AkQU5ZTyxWQUxPUiA9IFlfVFZBWyhucm93KFlfVFZBKS1ucm93KEVTUCkrMSk6bnJvdyhZX1RWQSksIklORElDRS5HRU5FUkFMX1NBQyJdKQoKRGF0YSA8LSByYmluZChFU1AsQ0FOKQpEYXRhJFZBTE9SIDwtIHJvdW5kKGFzLm51bWVyaWMoRGF0YSRWQUxPUiksMSkKCkZlY2hhIDwtIGFzLmZhY3Rvcihmb3JtYXQoYXMueWVhcm1vbihZX1RWQVsobnJvdyhZX1RWQSktbnJvdyhFU1ApKzEpOm5yb3coWV9UVkEpLCJGRUNIQSJdKSwiJWIgJVkiKSkKCkRhdGEgPC0gY2JpbmQoRGF0YSxGZWNoYSA9IEZlY2hhKQpEYXRhIDwtIHJlbmFtZShEYXRhLCBWYWxvciA9IFZBTE9SKQpEYXRhIDwtIHJlbmFtZShEYXRhLCBUZXJyaXRvcmlvID0gR0VPKQoKRGF0YSRGZWNoYSA8LSBmYWN0b3IoRGF0YSRGZWNoYSwgbGV2ZWxzID0gIHVuaXF1ZShEYXRhJEZlY2hhKSkKCnAgPC0gZ2dwbG90KGRhdGEgPSBEYXRhLCBhZXMoeCA9IEZlY2hhLCB5ID0gVmFsb3IsIGdyb3VwID0gVGVycml0b3JpbywgY29sb3VyID0gVGVycml0b3JpbywgdGV4dCA9IHBhc3RlMCgiVGVycml0b3JpbzogIixUZXJyaXRvcmlvLCAiPGJyPkZlY2hhOiAiLEZlY2hhLCI8YnI+VGFzYSBBbnVhbDogIixwYXN0ZTAoVmFsb3IsIiUiKSkpKSsKICBnZW9tX2xpbmUoc2l6ZSA9IDAuOCkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yNSkgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IEZlY2hhWzFdLCBsaW5ldHlwZSA9ICJzb2xpZCIsIGNvbG9yID0gImJsYWNrIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnRpdGxlPWVsZW1lbnRfYmxhbmsoKSkgKwogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCB2anVzdCA9ICJlbmUgMjAxOSIsIGZhY2UgPSAiYm9sZCIpKSArCiAgeWxhYigiICIpICArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9sZWdlbmQodGl0bGUgPSAiICIpKSsKICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcz1jKCJFc3Bhw7FhIj0iIzdCMjQxQyIsIkNhbmFyaWFzIj0iIzAwOGJkMCIpKQogCmdncGxvdGx5KHAsIHRvb2x0aXAgPSAidGV4dCIpICU+JSAKICBjb25maWcoZGlzcGxheWxvZ28gPSBGQUxTRSwgbW9kZUJhckJ1dHRvbnMgPSBsaXN0KGxpc3QoInpvb20yZCIpLGxpc3QoInBhbjJkIiksbGlzdCgicmVzZXRTY2FsZTJkIiksbGlzdCgidG9JbWFnZSIpKSkgJT4lIAogIGxheW91dChob3Zlcm1vZGUgPSAneCB1bmlmaWVkJykgJT4lIAogIGFkZF9hbm5vdGF0aW9ucyh4ID0gKG5yb3coRGF0YSkvMikrMC42LAogICAgICAgICAgICAgICAgICB5ID0gRGF0YSRWYWxvcltucm93KERhdGEpXS02LAogICAgICAgICAgICAgICAgICB0ZXh0ID0gcGFzdGUwKERhdGEkVmFsb3JbbnJvdyhEYXRhKV0sIiUiKSwKICAgICAgICAgICAgICAgICAgeHJlZiA9ICJ4IiwKICAgICAgICAgICAgICAgICAgeXJlZiA9ICJ5IiwKICAgICAgICAgICAgICAgICAgc2hvd2Fycm93ID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgIGZvbnQgPSBsaXN0KGNvbG9yID0gIiMwMDhiZDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAnc2FucyBzZXJpZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAxNCkKICAgICAgICAgICAgICAgICAgKSU+JSAKICBhZGRfYW5ub3RhdGlvbnMoeCA9IChucm93KERhdGEpLzIpLAogICAgICAgICAgICAgICAgICB5ID0gRGF0YSRWYWxvcltucm93KERhdGEpLzJdLTgsCiAgICAgICAgICAgICAgICAgIHRleHQgPSBwYXN0ZTAoRGF0YSRWYWxvcltucm93KERhdGEpLzJdLCIlIiksCiAgICAgICAgICAgICAgICAgIHhyZWYgPSAieCIsCiAgICAgICAgICAgICAgICAgIHlyZWYgPSAieSIsCiAgICAgICAgICAgICAgICAgIHNob3dhcnJvdyA9IEZBTFNFLAogICAgICAgICAgICAgICAgICBmb250ID0gbGlzdChjb2xvciA9ICIjN0IyNDFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gJ3NhbnMgc2VyaWYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMTQpKQoKCmBgYAoKPHAgc3R5bGU9Im1hcmdpbi10b3A9NzBweDsiPiBTaSBzZSBlbGltaW5hbiBsb3MgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvLCBlbCBDb21lcmNpbyBgciBiYWphX3N1YmUoWV9UVkEkQ09NRVJDSU9fU0FDW25yb3coWV9UVkEpXSlgIHVuIGByIGZvcm1hdChyb3VuZChZX1RWQSRDT01FUkNJT19TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlIHkgT3Ryb3Mgc2VydmljaW9zIGByIGJhamFfc3ViZShZX1RWQSRPVFJPUy5TRVJWSUNJT1NfU0FDW25yb3coWV9UVkEpXSlgIHVuIGByIGZvcm1hdChyb3VuZChZX1RWQSRPVFJPUy5TRVJWSUNJT1NfU0FDW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJS4gRW4gZWwgZ3J1cG8gZGUgT3Ryb3MgU2VydmljaW9zLCBUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8gKGByIGZvcm1hdChyb3VuZChZX1RWQSRUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE9fU0FDW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIEhvc3RlbGVyw61hIChgciBmb3JtYXQocm91bmQoWV9UVkEkSE9TVEVMRVJJQV9TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgSW5mb3JtYWNpw7NuIHkgY29tdW5pY2FjaW9uZXMgKGByIGZvcm1hdChyb3VuZChZX1RWQSRJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTX1NBQ1tucm93KFlfVFZBKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLCBBY3RpdmlkYWRlcyBwcm9mZXNpb25hbGVzLCBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMgKGByIGZvcm1hdChyb3VuZChZX1RWQSRBQ1RJVklEQURFUy5QUk9GRVNJT05BTEVTLkNJRU5USUZJQ0FTLlkuVEVDTklDQVNfU0FDW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIHkgQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMgKGByIGZvcm1hdChyb3VuZChZX1RWQSRBQ1RJVklEQURFUy5BRE1JTklTVFJBVElWQVMuWS5TRVJWSUNJT1MuQVVYSUxJQVJFU19TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKS4KPC9wPgoKPGgzPiAKICAqKsONbmRpY2UgY2lmcmEgZGUgbmVnb2Npb3M6IEdlbmVyYWwgeSBwb3Igc2VjdG9yZXMuKioKICA8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogLTVweCI+VGFzYSBhbnVhbC4gUG9yY2VudGFqZS48L3A+CiAgPGRpdiBjbGFzcz0ibGV0Ij48cD5gciBNZXNfbm9tYnJlKENOJE1FU1tucm93KENOKV0pYCBkZSBgciBDTiRBTllPW25yb3coQ04pXWAgIDwvcD48L2Rpdj4KPC9oMz4gCgpgYGB7ciBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAnYXNpcycsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZT1GQUxTRX0KZGF0YSA8LSBzdWJzZXQoWV9UVkFbbnJvdyhZX1RWQSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTCIsIkNPTUVSQ0lPIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPIiAgLCJIT1NURUxFUklBIiwiSU5GT1JNQUNJT04uWS5DT01VTklDQUNJT05FUyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBUyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTIikpCmNvbG5hbWVzKGRhdGEpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhIDwtIHQocm91bmQoZGF0YSwxKSkKZGF0YV9zYWMgPC0gc3Vic2V0KFlfVFZBW25yb3coWV9UVkEpLF0sc2VsZWN0ID0gYygiSU5ESUNFLkdFTkVSQUxfU0FDIiwiQ09NRVJDSU9fU0FDIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPX1NBQyIgICwiSE9TVEVMRVJJQV9TQUMiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTX1NBQyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBU19TQUMiLCJBQ1RJVklEQURFUy5BRE1JTklTVFJBVElWQVMuWS5TRVJWSUNJT1MuQVVYSUxJQVJFU19TQUMiKSkKY29sbmFtZXMoZGF0YV9zYWMpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhX3NhYyA8LSB0KHJvdW5kKGRhdGFfc2FjLDEpKQoKREFUQSA8LSBjYmluZChkYXRhLGRhdGFfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCIiLCIiKQoKRVNQX3NhYyA8LSBmaWx0ZXIoQ05fc2FjLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIgJiAKICAgICAgICAgICAgICAgICAgICAgIE1FUyA9PSBDTiRNRVNbbnJvdyhDTildICYgQU5ZTyA9PUNOJEFOWU9bbnJvdyhDTildKQojIFJlY29kaWZpY2Ftb3MgbG9zIHNlY3RvcmVzIHBhcmEgcXVlIGNvaW5jaWRhbiBsb3Mgbm9tYnJlcwpFU1Bfc2FjW0VTUF9zYWMkU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3Rlcigiw41uZGljZSBnZW5lcmFsIikKRVNQX3NhY1tFU1Bfc2FjJFNlY3RvciA9PSAiQ29tZXJjaW8gYWwgcG9yIG1heW9yIHkgYWwgcG9yIG1lbm9yOyByZXBhcmFjacOzbiBkZSB2ZWjDrWN1bG9zIGRlIG1vdG9yIHkgbW90b2NpY2xldGFzIixdJFNlY3RvciA8LSBhcy5jaGFyYWN0ZXIoIkNvbWVyY2lvIikKCnJvd25hbWVzKEVTUF9zYWMpIDwtIEVTUF9zYWMkU2VjdG9yCkVTUF9zYWMgPC0gc3Vic2V0KEVTUF9zYWMsIHNlbGVjdCA9IGMoVkFMT1IpKQpjb2xuYW1lcyhFU1Bfc2FjKSA8LSBjKCIiKQoKRVNQIDwtIGZpbHRlcihDTl9zZWN0b3JlcywgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gYW51YWwiICYgCiAgICAgICAgICAgICAgICAgICAgICBNRVMgPT0gQ04kTUVTW25yb3coQ04pXSAmIEFOWU8gPT1DTiRBTllPW25yb3coQ04pXSkgCiMgUmVjb2RpZmljYW1vcyBsb3Mgc2VjdG9yZXMgcGFyYSBxdWUgY29pbmNpZGFuIGxvcyBub21icmVzCkVTUFtFU1AkU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3Rlcigiw41uZGljZSBnZW5lcmFsIikKRVNQW0VTUCRTZWN0b3IgPT0gIkNvbWVyY2lvIGFsIHBvciBtYXlvciB5IGFsIHBvciBtZW5vcjsgcmVwYXJhY2nDs24gZGUgdmVow61jdWxvcyBkZSBtb3RvciB5IG1vdG9jaWNsZXRhcyIsXSRTZWN0b3IgPC0gYXMuY2hhcmFjdGVyKCJDb21lcmNpbyIpCgpyb3duYW1lcyhFU1ApIDwtIEVTUCRTZWN0b3IKRVNQIDwtIHN1YnNldChFU1AsIHNlbGVjdCA9IGMoVkFMT1IpKQpjb2xuYW1lcyhFU1ApIDwtIGMoIiIpCgpEQVRBIDwtIGNiaW5kKERBVEEsRVNQLEVTUF9zYWMpCmNvbG5hbWVzKERBVEEpIDwtIGMoIsONbmRpY2Ugb3JpZ2luYWwiLCAiw41uZGljZSBjb3JyZWdpZG8gZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIiwKICAgICAgICAgICAgICAgICAgICAiw41uZGljZSBvcmlnaW5hbCIsICLDjW5kaWNlIGNvcnJlZ2lkbyBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8iKQpgYGAKCgo8dGFibGUgY2xhc3M9Im15LXRhYmxlIj4KPHRoZWFkPgo8dHI+Cjx0aD48L3RoPgo8dGggY29sc3Bhbj0iMiI+Q2FuYXJpYXM8L3RoPgo8dGggY29sc3Bhbj0iMiI+PGRpdiBzdHlsZT0iIj5Fc3Bhw7FhPC9kaXY+PC90aD4KPC90cj4KPHRyPgogICA8dGg+PC90aD4KICAgPHRoPiDDjW5kaWNlIG9yaWdpbmFsIDwvdGg+CiAgIDx0aD4gw41uZGljZSBjb3JyZWdpZG8gZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIDwvdGg+CiAgIDx0aD4gw41uZGljZSBvcmlnaW5hbCA8L3RoPgogICA8dGg+IMONbmRpY2UgY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyA8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5PgpgYGB7ciBlY2hvID0gRkFMU0UsIHJlc3VsdHMgPSAgImFzaXMifQpEQVRBIDwtIGZvcm1hdChEQVRBLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKQppIDwtIDEKZmlyc3Rfcm93X3RlbXBsYXRlID0gJzx0ciBjbGFzcz0iaGlnaGxpZ2h0LXJvdyI+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjx0ZD4lczwvdGQ+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjwvdHI+JwpjYXQoc3ByaW50ZihmaXJzdF9yb3dfdGVtcGxhdGUsIAogICAgICAgICAgICByb3duYW1lcyhEQVRBKVtpXSwgREFUQVtpLCAxXSwgREFUQVtpLCAyXSwgREFUQVtpLCAzXSwgREFUQVtpLCA0XSkpCnRlbXBsYXRlIDwtICc8dHI+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjx0ZD4lczwvdGQ+PHRkPiVzPC90ZD48dGQ+JXM8L3RkPjwvdHI+Jwpmb3IgKGkgaW4gMjpucm93KERBVEEpKSB7CiAgY2F0KHNwcmludGYodGVtcGxhdGUsIHJvd25hbWVzKERBVEEpW2ldLCBEQVRBW2ksIDFdLCBEQVRBW2ksIDJdLCBEQVRBW2ksIDNdLCBEQVRBW2ksIDRdKSkKfQpgYGAKPC90Ym9keT4KPC90YWJsZT4KCgo8ZGl2IGNsYXNzPSJib3hCb3JkZXIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+CiAgKipBTsOBTElTSVMgQ09NUEFSQURPIFBPUiBDQ0FBKioKPC9wPjwvZGl2PgoKPGg0PiAqKsONbmRpY2VzIGRlIGNpZnJhIGRlIG5lZ29jaW9zKiogPC9oND4gCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpDQ0FBX1RWQV9sYXN0IDwtICBmaWx0ZXIoQ04sIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIgJiBNRVMgPT0gQ04kTUVTW25yb3coQ04pXSAmIEFOWU8gPT0gYW55bykKQ0NBQV9UVkFfbGFzdCRTZWN0b3IgPC0gYXMuZmFjdG9yKENDQUFfVFZBX2xhc3QkU2VjdG9yKQpsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpW2xldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3Rvcik9PSJCYWxlYXJzLCBJbGxlcyJdIDwtICJJc2xhcyBCYWxlYXJlcyIKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iTXVyY2lhLCBSZWdpw7NuIGRlIl0gPC0gIlJlZ2nDs24gZGUgTXVyY2lhIgpsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpW2xldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3Rvcik9PSJBc3R1cmlhcywgUHJpbmNpcGFkbyBkZSJdIDwtICJQcmluY2lwYWRvIGRlIEFzdHVyaWFzIgpsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpW2xldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3Rvcik9PSJNYWRyaWQsIENvbXVuaWRhZCBkZSJdIDwtICJDb211bmlkYWQgZGUgTWFkcmlkIgpsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpW2xldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3Rvcik9PSJOYXZhcnJhLCBDb211bmlkYWQgRm9yYWwgZGUiXSA8LSAiQ29tdW5pZGFkIEZvcmFsIGRlIE5hdmFycmEiCmxldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3RvcilbbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKT09IlJpb2phLCBMYSJdIDwtICJMYSBSaW9qYSIKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iVG90YWwgc2VydmljaW9zIl0gPC0gIk5BQ0lPTkFMIgoKCgoKQ0NBQV9UVkFfbGFzdCA8LSBhcnJhbmdlKENDQUFfVFZBX2xhc3QsZGVzYyhWQUxPUikpCmBgYAoKPHA+TGEgdGFzYSBhbnVhbCBkZSBsYSBjaWZyYSBkZSBuZWdvY2lvcyBkZWwgU2VjdG9yIFNlcnZpY2lvcyBkZSBNZXJjYWRvIGByIGNyZWNfY2NhYShDQ0FBX1RWQV9sYXN0JFZBTE9SKVssMV1gIHJlc3BlY3RvIGEgYHIgbWVzX3ByZXZgIGRlIGByIGFueW9fcHJldmAgYHIgY3JlY19jY2FhKENDQUFfVFZBX2xhc3QkVkFMT1IpWywyXWAgbGFzIGNvbXVuaWRhZGVzIGF1dMOzbm9tYXMuIGByIENDQUFfVFZBX2xhc3QkU2VjdG9yW25yb3coQ0NBQV9UVkFfbGFzdCldYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfVFZBX2xhc3QkVkFMT1JbbnJvdyhDQ0FBX1RWQV9sYXN0KV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpIHkgYHIgQ0NBQV9UVkFfbGFzdCRTZWN0b3JbbnJvdyhDQ0FBX1RWQV9sYXN0KS0xXWAgKGByIGZvcm1hdChyb3VuZChDQ0FBX1RWQV9sYXN0JFZBTE9SW25yb3coQ0NBQV9UVkFfbGFzdCktMV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpIHByZXNlbnRhbiBsb3MgbWVub3JlcyBgciBkZXNjX2luY3IobWluKENDQUFfVFZBX2xhc3QkVkFMT1IpKWAsIG1pZW50cmFzIHF1ZSBgciBDQ0FBX1RWQV9sYXN0JFNlY3RvclsxXWAgKGByIGZvcm1hdChyb3VuZChDQ0FBX1RWQV9sYXN0JFZBTE9SWzFdLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSB5IGByIENDQUFfVFZBX2xhc3QkU2VjdG9yWzJdYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfVFZBX2xhc3QkVkFMT1JbMl0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpIHNvbiBsYXMgcXVlIGByIG1heF9zdWJfYmFqKG1heChDQ0FBX1RWQV9sYXN0JFZBTE9SKSlgLiA8L3A+IAoKCjxoMz4KICAqKsONbmRpY2VzIGdlbmVyYWxlcyBjaWZyYSBkZSBuZWdvY2lvczogbmFjaW9uYWwgeSBwb3IgY29tdW5pZGFkZXMgYXV0w7Nub21hcy4gVGFzYSBhbnVhbC4gUG9yY2VudGFqZS4qKiAKICA8ZGl2IGNsYXNzPSJsZXQiPjxwPioqYHIgTWVzX25vbWJyZShDTiRNRVNbbnJvdyhDTildKWAqKiAqKmRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqPC9wPjwvZGl2Pgo8L2gzPgoKYGBge3IgZWNobyA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYsIHdhcm5pbmcgPSBGQUxTRSwgY29tbWVudD1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KRGF0YSA8LSBzdWJzZXQoQ0NBQV9UVkFfbGFzdCwgc2VsZWN0ID0gYyhTZWN0b3IsVkFMT1IpKQpjb2xuYW1lcyhEYXRhKSA8LSBjKCJDQ0FBIiwiVmFsb3IiKQoKcCA8LSBnZ3Bsb3QoZGF0YSA9IERhdGEsIGFlcyh4ID0gcmVvcmRlcihDQ0FBLFZhbG9yKSwgeSA9IFZhbG9yLCBmaWxsID0gQ0NBQSwgdGV4dCA9IHBhc3RlMCgiQ0NBQTogIixDQ0FBLCAiPGJyPlRhc2EgQW51YWw6ICIscGFzdGUwKFZhbG9yLCIlIikpKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgeWxhYigiICIpICsKICB4bGFiKCIgIikgKwogIGxhYnMoY29sb3VyID0gIiAiKSArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9sZWdlbmQodGl0bGUgPSAiICIpKSArIGNvb3JkX2ZsaXAoKSArCiAgdGhlbWUoYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJOQUNJT05BTCIgICA9ICIjN0IyNDFDIiwgIkFuZGFsdWPDrWEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAKIkFyYWfDs24iICAgPSAiI0QwRDNENCIsICJQcmluY2lwYWRvIGRlIEFzdHVyaWFzIiAgID0gIiNEMEQzRDQiLCAgICAgICAKIklzbGFzIEJhbGVhcmVzIiAgID0gIiNEMEQzRDQiLCAiQ2FuYXJpYXMiICAgPSAiIzAwOGJkMCIsICAgICAgICAgICAgICAgICAgICAgCiJDYW50YWJyaWEiICAgPSAiI0QwRDNENCIsICJDYXN0aWxsYSB5IExlw7NuIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgCiJDYXN0aWxsYSAtIExhIE1hbmNoYSIgICA9ICIjRDBEM0Q0IiwgIkNhdGFsdcOxYSIgICA9ICIjRDBEM0Q0IiwgICAgICAgICAgICAgICAgICAgICAKIkNvbXVuaXRhdCBWYWxlbmNpYW5hIiAgID0gIiNEMEQzRDQiLCAiRXh0cmVtYWR1cmEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAgICAgCiJHYWxpY2lhIiAgID0gIiNEMEQzRDQiLCAiQ29tdW5pZGFkIGRlIE1hZHJpZCIgICAgPSAiI0QwRDNENCIsICAgICAgICAKIlJlZ2nDs24gZGUgTXVyY2lhIiAgID0gIiNEMEQzRDQiLCAiQ29tdW5pZGFkIEZvcmFsIGRlIE5hdmFycmEiICAgPSAiI0QwRDNENCIsICAgCiJQYcOtcyBWYXNjbyIgICA9ICIjRDBEM0Q0IiwgIkxhIFJpb2phIiAgID0gIiNEMEQzRDQiICAgICApKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChWYWxvciwiJSIpKSwgCiAgICBudWRnZV95ID0gc2lnbihEYXRhJFZhbG9yKSoxLjgsIHNpemUgPSAzLAogICAgaW5oZXJpdC5hZXMgPSBUUlVFCiAgKQoKZ2dwbG90bHkocCx0b29sdGlwID0gInRleHQiKSAlPiUgCiAgY29uZmlnKGRpc3BsYXlsb2dvID0gRkFMU0UsIG1vZGVCYXJCdXR0b25zID0gbGlzdChsaXN0KCJ6b29tMmQiKSxsaXN0KCJwYW4yZCIpLGxpc3QoInJlc2V0U2NhbGUyZCIpLGxpc3QoInRvSW1hZ2UiKSkpICU+JQogIHN0eWxlKGhvdmVyaW5mbyA9ICJub25lIiwgdHJhY2VzID0gc2VxKG5yb3coRGF0YSkrMSwgbnJvdyhEYXRhKSsxK25yb3coRGF0YSkpKQpgYGAKCjxoND4gKirDjW5kaWNlcyBkZSBvY3VwYWNpw7NuKiogPC9oND4gCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpDQ0FBX09DX1RWQV9sYXN0IDwtICBmaWx0ZXIoT0MsIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIgJiBNRVMgPT0gQ04kTUVTW25yb3coQ04pXSAmIEFOWU8gPT0gYW55bykKQ0NBQV9PQ19UVkFfbGFzdCRHRU8gPC0gYXMuZmFjdG9yKENDQUFfT0NfVFZBX2xhc3QkR0VPKQpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJCYWxlYXJzLCBJbGxlcyJdIDwtICJJc2xhcyBCYWxlYXJlcyIKbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKVtsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pPT0iTXVyY2lhLCBSZWdpw7NuIGRlIl0gPC0gIlJlZ2nDs24gZGUgTXVyY2lhIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJBc3R1cmlhcywgUHJpbmNpcGFkbyBkZSJdIDwtICJQcmluY2lwYWRvIGRlIEFzdHVyaWFzIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJNYWRyaWQsIENvbXVuaWRhZCBkZSJdIDwtICJDb211bmlkYWQgZGUgTWFkcmlkIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJOYXZhcnJhLCBDb211bmlkYWQgRm9yYWwgZGUiXSA8LSAiQ29tdW5pZGFkIEZvcmFsIGRlIE5hdmFycmEiCmxldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTylbbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKT09IlJpb2phLCBMYSJdIDwtICJMYSBSaW9qYSIKbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKVtsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pPT0iVG90YWwgTmFjaW9uYWwiXSA8LSAiTkFDSU9OQUwiCgoKCgpDQ0FBX09DX1RWQV9sYXN0IDwtIGFycmFuZ2UoQ0NBQV9PQ19UVkFfbGFzdCxkZXNjKFZBTE9SKSkKYGBgCgo8cD5MYSB0YXNhIGFudWFsIGRlIG9jdXBhY2nDs24gZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUgTWVyY2FkbyBgciBjcmVjX2NjYWEoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUilbLDFdYCByZXNwZWN0byBhIGByIG1lc19wcmV2YCBkZSBgciBhbnlvX3ByZXZgIGByIGNyZWNfY2NhYShDQ0FBX09DX1RWQV9sYXN0JFZBTE9SKVssMl1gIGxhcyBjb211bmlkYWRlcyBhdXTDs25vbWFzLiBgciBDQ0FBX09DX1RWQV9sYXN0JEdFT1tucm93KENDQUFfVFZBX2xhc3QpXWAgKGByIGZvcm1hdChyb3VuZChDQ0FBX09DX1RWQV9sYXN0JFZBTE9SW25yb3coQ0NBQV9PQ19UVkFfbGFzdCldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSB5IGByIENDQUFfT0NfVFZBX2xhc3QkR0VPW25yb3coQ0NBQV9PQ19UVkFfbGFzdCktMV1gIChgciBmb3JtYXQocm91bmQoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUltucm93KENDQUFfT0NfVFZBX2xhc3QpLTFdLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSBwcmVzZW50YW4gbG9zIG1heW9yZXMgYHIgZGVzY19pbmNyKG1pbihDQ0FBX09DX1RWQV9sYXN0JFZBTE9SKSlgLCBtaWVudHJhcyBxdWUgYHIgQ0NBQV9PQ19UVkFfbGFzdCRHRU9bMV1gIChgciBmb3JtYXQocm91bmQoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUlsxXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgeSBgciBDQ0FBX09DX1RWQV9sYXN0JEdFT1syXWAgKGByIGZvcm1hdChyb3VuZChDQ0FBX09DX1RWQV9sYXN0JFZBTE9SWzJdLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSBzb24gbGFzIHF1ZSBgciBtYXhfc3ViX2JhaihtYXgoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUikpYC4gPC9wPgoKPGgzPgogICoqw41uZGljZXMgZ2VuZXJhbGVzIGRlIG9jdXBhY2nDs246IG5hY2lvbmFsIHkgcG9yIGNvbXVuaWRhZGVzIGF1dMOzbm9tYXMuIFRhc2EgYW51YWwuIFBvcmNlbnRhamUuKiogICAgICA8ZGl2IGNsYXNzPSJsZXQiPjxwPioqYHIgTWVzX25vbWJyZShDTiRNRVNbbnJvdyhDTildKWAqKiAqKmRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqPC9wPjwvZGl2Pgo8L2gzPiAKCmBgYHtyIGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2LCB3YXJuaW5nID0gRkFMU0UsIGNvbW1lbnQ9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CkRhdGEgPC0gc3Vic2V0KENDQUFfT0NfVFZBX2xhc3QsIHNlbGVjdCA9IGMoR0VPLFZBTE9SKSkKY29sbmFtZXMoRGF0YSkgPC0gYygiQ0NBQSIsIlZhbG9yIikKCnAgPC0gZ2dwbG90KGRhdGEgPSBEYXRhLCBhZXMoeCA9IHJlb3JkZXIoQ0NBQSxWYWxvciksIHkgPSBWYWxvciwgZmlsbCA9IENDQUEsIHRleHQgPSBwYXN0ZTAoIkNDQUE6ICIsQ0NBQSwgIjxicj5UYXNhIEFudWFsOiAiLHBhc3RlMChWYWxvciwiJSIpKSkpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHlsYWIoIiAiKSArCiAgeGxhYigiICIpICsKICBsYWJzKGNvbG91ciA9ICIgIikgKwogIGd1aWRlcyhmaWxsID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIiAiKSkgKyBjb29yZF9mbGlwKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiTkFDSU9OQUwiICAgPSAiIzdCMjQxQyIsICJBbmRhbHVjw61hIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgCiJBcmFnw7NuIiAgID0gIiNEMEQzRDQiLCAiUHJpbmNpcGFkbyBkZSBBc3R1cmlhcyIgICA9ICIjRDBEM0Q0IiwgICAgICAgCiJJc2xhcyBCYWxlYXJlcyIgICA9ICIjRDBEM0Q0IiwgIkNhbmFyaWFzIiAgID0gIiMwMDhiZDAiLCAgICAgICAgICAgICAgICAgICAgIAoiQ2FudGFicmlhIiAgID0gIiNEMEQzRDQiLCAiQ2FzdGlsbGEgeSBMZcOzbiIgICA9ICIjRDBEM0Q0IiwgICAgICAgICAgICAgIAoiQ2FzdGlsbGEgLSBMYSBNYW5jaGEiICAgPSAiI0QwRDNENCIsICJDYXRhbHXDsWEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAgICAgICAgCiJDb211bml0YXQgVmFsZW5jaWFuYSIgICA9ICIjRDBEM0Q0IiwgIkV4dHJlbWFkdXJhIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgICAgIAoiR2FsaWNpYSIgICA9ICIjRDBEM0Q0IiwgIkNvbXVuaWRhZCBkZSBNYWRyaWQiICAgID0gIiNEMEQzRDQiLCAgICAgICAgCiJSZWdpw7NuIGRlIE11cmNpYSIgICA9ICIjRDBEM0Q0IiwgIkNvbXVuaWRhZCBGb3JhbCBkZSBOYXZhcnJhIiAgID0gIiNEMEQzRDQiLCAgIAoiUGHDrXMgVmFzY28iICAgPSAiI0QwRDNENCIsICJMYSBSaW9qYSIgICA9ICIjRDBEM0Q0IiAgICAgKSkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoVmFsb3IsIiUiKSksIAogICAgbnVkZ2VfeSA9IHNpZ24oRGF0YSRWYWxvcikqMC40LCBzaXplID0gMywKICAgIGluaGVyaXQuYWVzID0gVFJVRQogICkKZ2dwbG90bHkocCx0b29sdGlwID0gInRleHQiKSAlPiUgCiAgY29uZmlnKGRpc3BsYXlsb2dvID0gRkFMU0UsIG1vZGVCYXJCdXR0b25zID0gbGlzdChsaXN0KCJ6b29tMmQiKSxsaXN0KCJwYW4yZCIpLGxpc3QoInJlc2V0U2NhbGUyZCIpLGxpc3QoInRvSW1hZ2UiKSkpICU+JQogIHN0eWxlKGhvdmVyaW5mbyA9ICJub25lIiwgdHJhY2VzID0gc2VxKG5yb3coRGF0YSkrMSwgbnJvdyhEYXRhKSsxK25yb3coRGF0YSkpKQpgYGAKCjxkaXYgY2xhc3M9ImJveEJvcmRlciI+PHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KICAqKlJFVklTSU9ORVMgWSBBQ1RVQUxJWkFDScOTTiBERSBEQVRPUyoqCjwvcD48L2Rpdj4KCjxwIHN0eWxlPSJtYXJnaW4tdG9wOiAzNXB4OyI+IFNlIGhhbiBhY3R1YWxpemFkbyBsb3MgZGF0b3MgZGUgbGFzIHNlcmllcyBkZSBJQVNTIGNvcnJlc3BvbmRpZW50ZXMgYSBsb3MgY2luY28gw7psdGltb3MgbWVzZXMuIEVuIGVsIGNhc28gZGUgbGFzIHNlcmllcyBhanVzdGFkYXMgZGUgY2FsZW5kYXJpbyB5IGRlc2VzdGFjaW9uYWxpemFkYXMgeSBhanVzdGFkYXMgZGUgY2FsZW5kYXJpbywgc2lndWllbmRvIGVsIGVzdMOhbmRhciBkZWwgSU5FIHNlIHJldmlzYSBsYSBzZXJpZSBkZXNkZSBzdSBjb21pZW56by48L3A+Cgo8ZGl2IGNsYXNzPSJib3hCb3JkZXIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+CiAgKipOT1RBIE1FVE9ET0zDk0dJQ0EqKgo8L3A+PC9kaXY+Cgo8cD4gTGEgaW5mb3JtYWNpw7NuIGRlIGJhc2UgZGUgZXN0ZSBpbmRpY2Fkb3IgcHJvY2VkZSBkZSB1bmEgZW5jdWVzdGEgbWVuc3VhbCBhIGVtcHJlc2FzIHF1ZSByZWFsaXphIGVsIEluc3RpdHV0byBOYWNpb25hbCBkZSBFc3RhZMOtc3RpY2EgKElORSkgeSBxdWUgcmVjaWJlIGVsIElTVEFDIG1lZGlhbnRlIGFjdWVyZG8gZGUgaW50ZXJjYW1iaW8gZGUgaW5mb3JtYWNpw7NuIGVudHJlIGFtYm9zIG9yZ2FuaXNtb3MgcGFyYSBsYSBwdWJsaWNhY2nDs24gZGUgdW4gbWF5b3IgZGV0YWxsZSBlbiBsYSBjb211bmlkYWQgYXV0w7Nub21hLiA8L3A+Cgo8cD4gRXN0ZSBpbmZvcm1lIGFudGljaXBhIGxvcyB0cmFiYWpvcyBxdWUgZXN0YW1vcyBkZXNhcnJvbGxhbmRvIGVuIGVsIG1hcmNvIGRlbCBwcm95ZWN0byDigJxNw6l0b2RvcyBlY29ub23DqXRyaWNvcyBhcGxpY2Fkb3MgYSBzZXJpZXMgZGUgY295dW50dXJhIGVjb27Ds21pY2EgRUNPTUFDIChNQUMvNS4xMS5hLzAwNCnigJ0sIHJlYWxpemFkbyBlbiBjb2xhYm9yYWNpw7NuIGNvbiBsYXMgb2ZpY2luYXMgZGUgZXN0YWTDrXN0aWNhcyBkZSBBem9yZXMgeSBNYWRlaXJhIHkgZmluYW5jaWFkbyBwb3IgZWwgUHJvZ3JhbWEgZGUgQ29vcGVyYWNpw7NuIElOVEVSUkVHIFYtQSBFc3Bhw7FhLVBvcnR1Z2FsIE1BQyAoTWFkZWlyYS1Bem9yZXMtQ2FuYXJpYXMpIDIwMTQtMjAyMC4gPC9wPgoKPHA+IEVsIG9iamV0aXZvIHByaW5jaXBhbCBkZSBlc3RlIHByb3llY3RvIGVzIGxhIGNvbnN0cnVjY2nDs24gZGUgbW9kZWxvcyBlY29ub23DqXRyaWNvcyBxdWUgcGVybWl0YW4gYWp1c3RhciBsYXMgc2VyaWVzIGRlIGxvcyBwcmluY2lwYWxlcyBpbmRpY2Fkb3JlcyBkZSBsYSBjb3l1bnR1cmEgZGUgbG9zIGVmZWN0b3MgZGUgY2FsZW5kYXJpbyB5IGRlIGxhIGVzdGFjaW9uYWxpZGFkLiBMb3MgcmVzdWx0YWRvcyBwcmVzZW50YWRvcyBlbiBlc3RlIGluZm9ybWUgcGVybWl0ZW4gYWRlbGFudGFyIGxvcyB0cmFiYWpvcyBxdWUgZXN0YW1vcyBkZXNhcnJvbGxhbmRvIHkgcXVlIHNlcsOhbiBwdWJsaWNhZG9zIGEgZmluYWxlcyBkZSAyMDIwLiA8L3A+Cgo8aDUgc3R5bGU9Im1hcmdpbi10b3A6IDM1cHg7Ij4qKk3DoXMgaW5mb3JtYWNpw7NuKio8L2g1PgoKSVNUQUMgLSBDb211bmljYWNpw7NuIAoKW3d3dy5nb2JpZXJub2RlY2FuYXJpYXMub3JnL2lzdGFjL25vdGljaWFzXShodHRwOi8vd3d3LmdvYmllcm5vZGVjYW5hcmlhcy5vcmcvaXN0YWMvbm90aWNpYXMvKQoKaXN0YWNAZ29iaWVybm9kZWNhbmFyaWFzIAoKOTIyIDkyIDI4IDQxIC0gOTI4IDI5IDMyIDcxIAoKQGlzdGFjX2VzCgo8aW1nIHNyYz0iaHR0cDovL3d3dy5nb2JpZXJub2RlY2FuYXJpYXMub3JnL2lzdGFjL2dhbGVyaWFzL2ltYWdlbmVzL21hYy9tYWMtaW50ZXJyZWcucG5nIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJtYXJnaW46IDM1cHggMDsiIGFsdD0iTG9nbyBNQUMgLSBJTlRFUlJFRyIvPgo=