Resultados preliminares

## Warning: package 'ciTools' was built under R version 4.4.2
## Warning: package 'sandwich' was built under R version 4.4.2
## Warning: package 'Hmisc' was built under R version 4.4.1
## Warning: package 'flextable' was built under R version 4.4.1
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'patchwork' was built under R version 4.4.2

Información general de población de estudio

Información sociodemogrÔfica del hogar

Characteristic N = 2521
Total de personas 3.68 (1.62)
Ā Ā Ā Ā Unknown 17
Agua para consumo
Ā Ā Ā Ā Agua potable (o de red publica) 183 (78%)
Ā Ā Ā Ā Cisterna de agua 40 (17%)
Ā Ā Ā Ā Botellas (agua tratada) 5 (2.1%)
Ā Ā Ā Ā Pileta Publica 3 (1.3%)
Ā Ā Ā Ā Otro 3 (1.3%)
Ā Ā Ā Ā Pozo (natural) 1 (0.4%)
Ā Ā Ā Ā Unknown 17
Desague en el hogar
Ā Ā Ā Ā Silo 133 (57%)
    Red pública de desagüe (Desagüe con tuberas) 101 (43%)
Ā Ā Ā Ā Letrina 1 (0.4%)
Ā Ā Ā Ā Unknown 17
Localidad
Ā Ā Ā Ā Espinarences 85 (34%)
Ā Ā Ā Ā San Juan El Alto 61 (24%)
Ā Ā Ā Ā Juan Velazco Alvarado 53 (21%)
Ā Ā Ā Ā Nuevo Arequipa 36 (14%)
    Apurimeños 17 (6.7%)
1 Mean (SD); n (%)

Información del participante

Characteristic N = 3491
Edad 38 (16)
Ā Ā Ā Ā Unknown 1
Sexo
Ā Ā Ā Ā Femenino 220 (63%)
Ā Ā Ā Ā Masculino 129 (37%)
Nivel Educativo
Ā Ā Ā Ā Secundaria completa 101 (29%)
Ā Ā Ā Ā Primaria incompleta 78 (22%)
Ā Ā Ā Ā secundaria incompleta 64 (18%)
Ā Ā Ā Ā Primaria completa 40 (11%)
    Estudio Técnico completa 28 (8.0%)
Ā Ā Ā Ā Analfabeto 17 (4.9%)
    Estudio Técnico incompleto 14 (4.0%)
Ā Ā Ā Ā Universidad incompleta 4 (1.1%)
Ā Ā Ā Ā Universidad completa 3 (0.9%)
Ocupación
Ā Ā Ā Ā Agricultura 129 (37%)
Ā Ā Ā Ā Ama de casa 76 (22%)
Ā Ā Ā Ā Estudiante 31 (8.9%)
Ā Ā Ā Ā Comerciante/Vendedor 23 (6.6%)
Ā Ā Ā Ā Otro 23 (6.6%)
    Obrero u operarios (construcción, maquinaria, carpintero) 22 (6.3%)
Ā Ā Ā Ā Chofer 15 (4.3%)
Ā Ā Ā Ā GanaderĆ­a 8 (2.3%)
Ā Ā Ā Ā Desempleado 7 (2.0%)
Ā Ā Ā Ā Administrador/Empresario 4 (1.1%)
Ā Ā Ā Ā Jubilado 4 (1.1%)
    Profesional de educación 3 (0.9%)
Ā Ā Ā Ā Trabaja y estudia 2 (0.6%)
Ā Ā Ā Ā No aplica 2 (0.6%)
Estabilidad laboral
Ā Ā Ā Ā Busca el trabajo dĆ­a a dĆ­a 95 (42%)
Ā Ā Ā Ā Es temporal o por temporada 76 (33%)
Ā Ā Ā Ā Es estable, tengo un trabajo permanente 57 (25%)
Ā Ā Ā Ā Unknown 121
Seguro de salud
Ā Ā Ā Ā SIS 244 (70%)
Ā Ā Ā Ā No tengo ningĆŗn seguro 52 (15%)
Ā Ā Ā Ā ESSALUD 38 (11%)
Ā Ā Ā Ā No recuerda / no sabe 14 (4.0%)
Ā Ā Ā Ā No quiso responder 1 (0.3%)
Primer idioma aprendido
Ā Ā Ā Ā Quechua 205 (59%)
Ā Ā Ā Ā Castellano 81 (23%)
Ā Ā Ā Ā Castellano y quechua paralelamente 47 (13%)
Ā Ā Ā Ā Aymara 10 (2.9%)
Ā Ā Ā Ā Castellano y aymara paralelamente 6 (1.7%)
Idioma hablado actualmente
Ā Ā Ā Ā Castellano y quechua: Ambos por igual 190 (54%)
    Sólo en castellano 141 (40%)
    Sólo en quechua 7 (2.0%)
Ā Ā Ā Ā Mayormente en quechua 5 (1.4%)
Ā Ā Ā Ā Castellano y aymara: Ambos por igual 5 (1.4%)
Ā Ā Ā Ā Otros 1 (0.3%)
1 Mean (SD); n (%)

Dificultades luego de la migración

Agua para consumo

Desague

Diarreas

Desplazamiento forzado

Desplazamiento forzado

Razones del desplazamiento forzado

Percepción sobre cambios en el CLIMA antes de la migración

Cambios en el CLIMA

Cambios en el TEMPERATURA

Cambios en el LLUVIAS

Cambios en el EVENTOS EXTREMOS

Cambio de Patrones Dietarios antes y luego de la Migración

Antes de Migrar

Luego de la Migración

LS0tDQp0aXRsZTogIkVzdHVkaW8gTWlncmFudGVzIFBlZHJlZ2FsIg0KYXV0aG9yOiAiRXF1aXBvIEVuY3Vlc3Rhcy1Kb3JnZSBDYcOxYXJpIg0KZGF0ZTogIjIwMjQtMTAtMTAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB1bml0ZWQNCi0tLQ0KDQojICoqUmVzdWx0YWRvcyBwcmVsaW1pbmFyZXMqKg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRX0NCg0KIyBMaW1waWFyIGVsIGVudG9ybm8sIGV4Y2VwdG8gYWxndW5hcyB2YXJpYWJsZXMgZXNwZWPDrWZpY2FzIHNpIGxhcyBodWJpZXJhDQpybShsaXN0ID0gc2V0ZGlmZihscygpLCBjKCkpKQ0KDQojIENhcmdhciBsaWJyZXLDrWFzIG5lY2VzYXJpYXMNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJpbykNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KGhhdmVuKQ0KbGlicmFyeShndCkgICAgICAgICAgIyBQYXJhIGxhIGNyZWFjacOzbiBkZSB0YWJsYXMNCmxpYnJhcnkoZ3RzdW1tYXJ5KSAgICMgUGFyYSBsYSBjcmVhY2nDs24gZGUgdGFibGFzDQpsaWJyYXJ5KGNpVG9vbHMpICAgICAjIEdlbmVyYWNpw7NuIGRlIGludGVydmFsb3MgZGUgY29uZmlhbnphDQpsaWJyYXJ5KHNhbmR3aWNoKSAgICAjIEZ1bmNpw7NuIGRlIG1lam9yYSBlbiBsYSBlc3RpbWFjacOzbiBkZSByZWdyZXNpw7NuIA0KbGlicmFyeShIbWlzYykNCmxpYnJhcnkoZmxleHRhYmxlKSAgICMgR2VuZXJhciBhcmNoaXZvcyBkZSBsYXMgdGFibGFzDQpsaWJyYXJ5KGZvcmNhdHMpICAgICAjIE9yZGVuYXIgY2F0ZWdvcsOtYXMgZGUgdmFyaWFibGVzIGNhdGVnw7NyaWNhcw0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwYXRjaHdvcmspDQoNCiMgTGltcGlhciBsYSBjb25zb2xhDQpjYXQoIlwwMTQiKQ0KDQojIFJ1dGEgZGVsIGFyY2hpdm8sIGFqdXN0YWRhIGEgbGEgcnV0YSBjb21wbGV0YQ0KZmlsZV9wYXRoIDwtICJDOi9Vc2Vycy9qb3JnZS9Cb3gvUFJPWSBFY2hpbm9jb2Njb3Npcy9QZWRyZWdhbCAtICBNaWdyYW50cy9Qcm95ZWN0byBjbMOtbmljbyBQZWRyZWdhbC9NaWdyYWNpw7NuL2RhdGEvYmFzZSBtb2RpZmljYWRhL0Jhc2UgZGUgZGF0b3MgbGltcGlhIGVuY3Vlc3Rhcy9kYXRhX2VuY3Vlc3Rhcy5SRFMiDQoNCiMgVmVyaWZpY2FyIHNpIGVsIGFyY2hpdm8gZXhpc3RlIGFudGVzIGRlIGltcG9ydGFybG8NCmlmIChmaWxlLmV4aXN0cyhmaWxlX3BhdGgpKSB7DQogIGRhdGFfZW5jdWVzdGFzIDwtIGltcG9ydChmaWxlX3BhdGgpDQp9IGVsc2Ugew0KICBzdG9wKHBhc3RlKCLCoUFyY2hpdm8gbm8gZW5jb250cmFkbyEiLCBmaWxlX3BhdGgpKQ0KfQ0KDQpgYGANCg0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFfQ0KI3RhYmxlKGRhdGFfZW5jdWVzdGFzJHJlZGNhcF9yZXBlYXRfaW5zdHJ1bWVudCkNCg0KZGF0YV9ob2dhciA8LSBkYXRhX2VuY3Vlc3RhcyAlPiUNCiAgc2VsZWN0KHJlY29yZF9pZDpob2dhcl9jb21wbGV0ZSwgcmVkY2FwX3JlcGVhdF9pbnN0cnVtZW50LmZhY3Rvcjpob2dhcl9jb21wbGV0ZS5mYWN0b3IpICU+JQ0KICBmaWx0ZXIocmVkY2FwX3JlcGVhdF9pbnN0cnVtZW50ID09ICJpbmZvcm1hY2lvbl9ob2dhciIpDQoNCmRhdGFfYWR1bHRvIDwtIGRhdGFfZW5jdWVzdGFzICU+JQ0KICBzZWxlY3QocmVjb3JkX2lkLCByZWRjYXBfcmVwZWF0X2luc3RydW1lbnQsIGFkdWx0b19pbmRpdmlkdWFsX3RpbWVzdGFtcDpkZXBhX3Zpdl9fXzY2LCBkZXBhX2FkZDpkZXBhX19fMjUsIG9jdXBhX21pZ3JhOmFkdWx0b19pbmRpdmlkdWFsX2NvbXBsZXRlLCBzZXhvX3BhcnRpY2lwYW50ZS5mYWN0b3I6ZGVwYV92aXZfX182Ni5mYWN0b3IsIG9jdXBhX21pZ3JhLmZhY3RvcjphZHVsdG9faW5kaXZpZHVhbF9jb21wbGV0ZS5mYWN0b3IpICU+JQ0KICBmaWx0ZXIocmVkY2FwX3JlcGVhdF9pbnN0cnVtZW50ID09ICJhZHVsdG9faW5kaXZpZHVhbCIpDQoNCmRhdGFfbWVub3IgPC0gZGF0YV9lbmN1ZXN0YXMgJT4lDQogIHNlbGVjdChyZWNvcmRfaWQsIHJlZGNhcF9yZXBlYXRfaW5zdHJ1bWVudCwgbWVub3JfaW5kaXZpZHVhbF90aW1lc3RhbXA6ZGVwYV92aXZfbV9fXzY2LCBkZXBhX2FkZF9tOmRlcGFfbV9fXzI1LCBvY3VwYV9taWdyYV9tOm1lbm9yX2luZGl2aWR1YWxfY29tcGxldGUsIHNleG9fcGFydGljaXBhbnRlX20uZmFjdG9yOmRlcGFfdml2X21fX182Ni5mYWN0b3IsIG9jdXBhX21pZ3JhX20uZmFjdG9yOm1lbm9yX2luZGl2aWR1YWxfY29tcGxldGUuZmFjdG9yKSAlPiUNCiAgZmlsdGVyKHJlZGNhcF9yZXBlYXRfaW5zdHJ1bWVudCA9PSAibWVub3JfaW5kaXZpZHVhbCIpDQoNCiMgRWxpbWluYW5kbyBjYXJhY3RlciAiX20iIGRlIGxhcyB2YXJpYWJsZXMgZGUgZGF0YV9tZW5vciBwYXJhIHF1ZSBzZWFuIHBhcnRlY2lkb3MgYSB2YXJpYWJsZXMgZGUgZGF0YV9hZHVsdG8NCmNvbG5hbWVzKGRhdGFfbWVub3IpIDwtIGdzdWIoIl9tIiwgIiIsIGNvbG5hbWVzKGRhdGFfbWVub3IpKQ0KDQojZ2xpbXBzZShzZWxlY3QoZGF0YV9tZW5vciwgY29udGFpbnMoIm9jdXBhaWciKSkpDQojZ2xpbXBzZShzZWxlY3QoZGF0YV9tZW5vciwgY29udGFpbnMoImdyYV9wb3QiKSkpDQoNCiMgQ29ycmlnaWVuZG8gY2FyYWN0ZXJlcyBkZSB2YXJpYWJsZXMgcGFyYSBxdWUgZXN0ZSBsaXN0byBwYXJhIHVuaXIgZGF0YV9hZHVsdG8geSBkYXRhX21lbm9yDQpjb2xuYW1lcyhkYXRhX21lbm9yKSA8LSBnc3ViKCJvY3VwYWlncmEiLCAib2N1cGFfbWlncmEiLCBjb2xuYW1lcyhkYXRhX21lbm9yKSkNCmNvbG5hbWVzKGRhdGFfbWVub3IpIDwtIGdzdWIoIm1pZ3JhX3BvdGl2byIsICJtaWdyYV9wX21vdGl2byIsIGNvbG5hbWVzKGRhdGFfbWVub3IpKQ0KDQpkYXRhX21lbm9yIDwtIHJlbmFtZShkYXRhX21lbm9yLCBpbmRpdmlkdWFsX3RpbWVzdGFtcCA9IG1lbm9yX2luZGl2aWR1YWxfdGltZXN0YW1wKQ0KZGF0YV9hZHVsdG8gPC0gcmVuYW1lKGRhdGFfYWR1bHRvLCBpbmRpdmlkdWFsX3RpbWVzdGFtcCA9IGFkdWx0b19pbmRpdmlkdWFsX3RpbWVzdGFtcCkNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIGRhdGVfYSA9IGRhdGUpDQpkYXRhX21lbm9yIDwtIHJlbmFtZShkYXRhX21lbm9yLCBvY3VwYV9taWdyYV9tb2RlID0gb2N1cGFfbWlncmFvZGUpDQpkYXRhX21lbm9yIDwtIHJlbmFtZShkYXRhX21lbm9yLCBjYW1iX21lbmVzID0gY2FtYmVuZXMpDQpkYXRhX21lbm9yIDwtIHJlbmFtZShkYXRhX21lbm9yLCBjYW1iX21lbmVzLmZhY3RvciA9IGNhbWJlbmVzLmZhY3RvcikNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIGNvbWVudF9hID0gY29tZW50KQ0KZGF0YV9tZW5vciA8LSByZW5hbWUoZGF0YV9tZW5vciwgcF9pbmRpdmlkdWFsX2NvbXBsZXRlID0gbWVub3JfaW5kaXZpZHVhbF9jb21wbGV0ZSkNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIHBfaW5kaXZpZHVhbF9jb21wbGV0ZS5mYWN0b3IgPSBtZW5vcl9pbmRpdmlkdWFsX2NvbXBsZXRlLmZhY3RvcikNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIG9jdXBhY2lvbl9tb2RlID0gb2N1cGFjaW9ub2RlKQ0KZGF0YV9tZW5vciA8LSByZW5hbWUoZGF0YV9tZW5vciwgb2N1cGFjaW9uX21vZGUuZmFjdG9yID0gb2N1cGFjaW9ub2RlLmZhY3RvcikNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIG9jdXBhX21pZ3JhX21vZGUuZmFjdG9yID0gb2N1cGFfbWlncmFvZGUuZmFjdG9yKQ0KZGF0YV9tZW5vciA8LSByZW5hbWUoZGF0YV9tZW5vciwgaG9tZV9jb21wX2FuaW1fYW50ZXNfdGlwbyA9IGhvbWVfd29ya19hbmltX2FfdGlwbykNCmRhdGFfbWVub3IgPC0gcmVuYW1lKGRhdGFfbWVub3IsIGhvbWVfY29tcF9hbmltX2FudGVzX3RpcG8uZmFjdG9yID0gaG9tZV93b3JrX2FuaW1fYV90aXBvLmZhY3RvcikNCmRhdGFfYWR1bHRvIDwtIHJlbmFtZShkYXRhX2FkdWx0bywgcF9pbmRpdmlkdWFsX2NvbXBsZXRlID0gYWR1bHRvX2luZGl2aWR1YWxfY29tcGxldGUpDQpkYXRhX2FkdWx0byA8LSByZW5hbWUoZGF0YV9hZHVsdG8sIHBfaW5kaXZpZHVhbF9jb21wbGV0ZS5mYWN0b3IgPSBhZHVsdG9faW5kaXZpZHVhbF9jb21wbGV0ZS5mYWN0b3IpDQpkYXRhX2FkdWx0byRkYXRlX2EgPC0gYXMuY2hhcmFjdGVyKGRhdGFfYWR1bHRvJGRhdGVfYSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCiMjQikgVW5pZW5kbyBkYXRhIGRlIGFkdWx0byB5IG1lbm9yLS0tLQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQoNCg0KIyBIb21lZ2VuaXphbmRvIGxhYmVsZW9zIGRlIGxhcyB2YXJpYWJsZXMgZGUgYW1iYXMgYmFzZXMgZGUgZGF0b3MNCmRhdGFfYWR1bHRvIDwtIGRhdGFfYWR1bHRvICU+JSAgbXV0YXRlKGFjcm9zcyh3aGVyZSh+IGluaGVyaXRzKC4sICJsYWJlbGxlZCIpKSwgYXMuY2hhcmFjdGVyKSkgIyBDb252ZXJ0aXIgY29sdW1uYXMgbGFiZWxsZWQgZW4gZGF0YV9hZHVsdG8NCmRhdGFfbWVub3IgPC0gZGF0YV9tZW5vciAlPiUgIG11dGF0ZShhY3Jvc3Mod2hlcmUofiBpbmhlcml0cyguLCAibGFiZWxsZWQiKSksIGFzLmNoYXJhY3RlcikpICMgQ29udmVydGlyIGNvbHVtbmFzIGxhYmVsbGVkIGVuIGRhdGFfbWVub3INCg0KIyBVbmllbmRvIGRhdGENCmRhdGFfaW5kaXZpZHVhbCA8LSBiaW5kX3Jvd3MoZGF0YV9hZHVsdG8sIGRhdGFfbWVub3IpDQpybShkYXRhX2FkdWx0bywgZGF0YV9tZW5vcikNCg0KDQoNCiMgQ29tcHJvYmFuZG8gc2kgaGF5IHZhcmlhYmxlcyBxdWUgbm8gaGFuIGFwcGVuZWFkbyBiaWVuDQojY29sdW1uYXNfYWR1bHRvIDwtIGNvbG5hbWVzKGRhdGFfYWR1bHRvKQ0KI2NvbHVtbmFzX2luZGl2aWR1YWwgPC0gY29sbmFtZXMoZGF0YV9pbmRpdmlkdWFsKQ0KI2FkaWNpb25hbGVzX2luZGl2aWR1YWwgPC0gc2V0ZGlmZihjb2x1bW5hc19pbmRpdmlkdWFsLCBjb2x1bW5hc19hZHVsdG8pDQojYWRpY2lvbmFsZXNfYWR1bHRvIDwtIHNldGRpZmYoY29sdW1uYXNfYWR1bHRvLCBjb2x1bW5hc19pbmRpdmlkdWFsKQ0KI2NhdCgiVmFyaWFibGVzIGFkaWNpb25hbGVzIGVuIGRhdGFfaW5kaXZpZHVhbDpcbiIpDQojcHJpbnQoYWRpY2lvbmFsZXNfaW5kaXZpZHVhbCkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCiMjQykgVW5pZW5kbyBkYXRhIGhvZ2FyIGUgaW5kaXZpZHVhbC0tLS0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQpkYXRhX2luZGl2aWR1YWxfaG9nYXIgPC0gZGF0YV9pbmRpdmlkdWFsICU+JQ0KICBsZWZ0X2pvaW4oZGF0YV9ob2dhciwgYnkgPSAicmVjb3JkX2lkIikNCg0Kcm0oZGF0YV9pbmRpdmlkdWFsKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KIyNEKSBBZGl0aW9uYWwgZGF0YSBjbGVhbmluZy0tLS0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQojIyMNCiMgSW5mb3JtYWNpw7NuIGRlIGxvY2FsaWRhZGVzDQoNCiNkYXRhX2hvZ2FyICU+JQ0KIyAgZmlsdGVyKGxvY2FsaWRhZC5mYWN0b3I9PSAiT3RybyAoRXNwZWNpZmljYXIpIikgJT4lIA0KIyAgc2VsZWN0KHJlY29yZF9pZCwgbG9jYWxpZGFkLCBsb2NhbGlkYWQuZmFjdG9yICkgDQoNCiNkYXRhX2hvZ2FyICU+JQ0KIyAgZmlsdGVyKGxvY2FsaWRhZD09IDgpICU+JSANCiMgIHNlbGVjdChsb2NhbGlkYWQsIGxvY2FsaWRhZC5mYWN0b3IgKSAlPiUgIHNhbXBsZV9uKDgpDQoNCg0KIyBSZWFzaWduYXIgbG9zIHZhbG9yZXMgZGUgbG9jYWxpZGFkLmZhY3RvciBkb25kZSBsb2NhbGlkYWQgPT0gOA0KZGF0YV9ob2dhciA8LSBkYXRhX2hvZ2FyICU+JQ0KICBtdXRhdGUobG9jYWxpZGFkLmZhY3RvciA9IGlmZWxzZShsb2NhbGlkYWQgPT0gOCAmIGxvY2FsaWRhZC5mYWN0b3IgPT0gIk90cm8gKEVzcGVjaWZpY2FyKSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXB1cmltZcOxb3MiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKGxvY2FsaWRhZC5mYWN0b3IpKSkgJT4lDQogIG11dGF0ZShsb2NhbGlkYWQuZmFjdG9yID0gZmFjdG9yKGxvY2FsaWRhZC5mYWN0b3IpKQ0KDQoNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIA0KIyBJbnNlZ3VyaWRhZCBBbGltZW50YXJpYQ0KDQojZ2xpbXBzZShkYXRhX2hvZ2FyKQ0KDQojZ2xpbXBzZShzZWxlY3QoZGF0YV9ob2dhciwgY29udGFpbnMoImluc2VfIikpKQ0KDQoNCiMgRmlsdHJhciBsYXMgdmFyaWFibGVzIGRlIGludGVyw6lzDQp2YXJpYWJsZXNfaW50ZXJlcyA8LSBjKCJpbnNlX3ByZW9fYWxpIiwgImluc2Vfc2luX2FsaSIsICJpbnNlX25vX3NhbHUiLA0KICAgICAgICAgICAgICAgICAgICAgICAiaW5zZV9wb2NhX3ZhcmllIiwgImluc2VfZm9vZF9kZWpvIiwgImluc2VfZm9vZF9tZW5vcyIsDQogICAgICAgICAgICAgICAgICAgICAgICJpbnNlX2hhbV9ub19mb29kIiwgImluc2Vfb25lX2Zvb2QiLCAiaW5zZV9tX25vX3NhbHUiLCAiaW5zZV9tX3BvY2FfdmFyaWUiLA0KICAgICAgICAgICAgICAgICAgICAgICAiaW5zZV9tX2Zvb2RfZGVqbyIsICJpbnNlX21fZm9vZF9tZW5vcyIsICJpbnNlX21fZm9vZF9kaXNtaSIsICJpbnNlX21faGFtX25vX2Zvb2QiLCAiaW5zZV9tX29uZV9mb29kIiApDQoNCg0KIyBQYXNvIDE6IENvbnZlcnRpciB2YWxvcmVzIGRpc3RpbnRvcyBkZSAxIHkgMiBlbiBOQQ0KZGF0YV9ob2dhciA8LSBkYXRhX2hvZ2FyICU+JQ0KICBtdXRhdGUoYWNyb3NzKGFsbF9vZih2YXJpYWJsZXNfaW50ZXJlcyksIH4gaWZlbHNlKC4gJWluJSBjKDEsIDIsIE5BKSwgLiwgTkEpKSkNCg0KIyBQYXNvIDI6IENyZWFyIGxhIHZhcmlhYmxlICJpbnNlX3ZlciINCmRhdGFfaG9nYXIgPC0gZGF0YV9ob2dhciAlPiUNCiAgbXV0YXRlKGluc2VfdmVyID0gaWZlbHNlKHJvd1N1bXMoaXMubmEoYWNyb3NzKGFsbF9vZih2YXJpYWJsZXNfaW50ZXJlcykpKSkgPT0gMCwgMSwgMCkpDQoNCiMgVmVyaWZpY2FyIGxvcyByZXN1bHRhZG9zDQojZ2xpbXBzZShkYXRhX2hvZ2FyKQ0KI3RhYmxlKGRhdGFfaG9nYXIkaW5zZV92ZXIpDQoNCmBgYA0KDQoNCiMgIEluZm9ybWFjacOzbiBnZW5lcmFsIGRlIHBvYmxhY2nDs24gZGUgZXN0dWRpbw0KDQojIyMgSW5mb3JtYWNpw7NuIHNvY2lvZGVtb2dyw6FmaWNhIGRlbCBob2dhcg0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCiMjQSkgVGFibGEgMTogSW5mb3JtYWNpw7NuIHNvY2lvZGVtb2dyw6FmaWNhIC0tLS0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQoNCiMgSW5mb3JtYWNpw7NuIGRlbCBob2dhcg0KDQojIC0gVG90YWwgcGVyc29uYXMgcG9yIGhvZ2FyDQojIC0gSG9nYXJlcyBjb24gbWVub3JlcyBkZSA1IGHDsW9zDQojIC0gSG9nYXJlcyBjb24gbWVub3JlcyBkZSAxOCBhw7Fvcw0KIyAtIEFndWEgcGFyYSBiZWJlciBkZSBkb25kZSBvYnRpZW5lDQojIC0gRGVzYWd1ZQ0KIyAtIEluc2VndXJpZGFkIGFsaW1lbnRhcmlhIG1vZGVyYWRhLWdyYXZlDQojIC0gTG9jYWxpZGFkZXMNCg0KDQpkYXRhX3RhYmxlXzEgIDwtIGRhdGFfaG9nYXIgJT4lICBzZWxlY3QocGVyc29uYXNfaG9nYXIsIGhvbWVfd2F0ZXIuZmFjdG9yLCBob21lX2Rlc2FndWVfdGlwby5mYWN0b3IsIGxvY2FsaWRhZC5mYWN0b3IpDQojZ2xpbXBzZShkYXRhX2hvZ2FyKQ0KI2dsaW1wc2UoZGF0YV90YWJsZV8xKQ0KDQojc3RyKGRhdGFfdGFibGVfMSRwZXJzb25hc19ob2dhcikNCmRhdGFfdGFibGVfMSRwZXJzb25hc19ob2dhciA8LSBhcy5udW1lcmljKGRhdGFfdGFibGVfMSRwZXJzb25hc19ob2dhcikNCmRhdGFfdGFibGVfMSRwZXJzb25hc19ob2dhciA8LSBhcy5udW1lcmljKGRhdGFfdGFibGVfMSRwZXJzb25hc19ob2dhcikNCiNnbGltcHNlKGRhdGFfdGFibGVfMSkNCg0KDQpkYXRhX3RhYmxlXzEgPC0gZGF0YV90YWJsZV8xICU+JQ0KICBtdXRhdGUoYWNyb3NzKHdoZXJlKGlzLmZhY3RvciksIH4gZmN0X2Ryb3AoZmN0X2luZnJlcSguKSkpKQ0KDQoNCnRhYmxhXzEgPC0gDQogIGRhdGFfdGFibGVfMSAlPiUNCiAgdGJsX3N1bW1hcnkoDQogICAgbGFiZWwgPSBsaXN0KA0KICAgICAgcGVyc29uYXNfaG9nYXIgfiAiVG90YWwgZGUgcGVyc29uYXMiLA0KICAgICAgaG9tZV93YXRlci5mYWN0b3IgfiAiQWd1YSBwYXJhIGNvbnN1bW8iLA0KICAgICAgaG9tZV9kZXNhZ3VlX3RpcG8uZmFjdG9yIH4gIkRlc2FndWUgZW4gZWwgaG9nYXIiLA0KICAgICAgbG9jYWxpZGFkLmZhY3RvciB+ICJMb2NhbGlkYWQiDQogICAgKSwNCiAgICB0eXBlID0gYyhwZXJzb25hc19ob2dhcikgfiAiY29udGludW91cyIsDQogICAgc3RhdGlzdGljID0gYWxsX2NvbnRpbnVvdXMoKSB+ICJ7bWVhbn0gKHtzZH0pIg0KICApICU+JSANCiAgYm9sZF9sYWJlbHMoKSAlPiUgDQogIGl0YWxpY2l6ZV9sZXZlbHMoKQ0KDQp0YWJsYV8xDQoNCnJtKGRhdGFfdGFibGVfMSwgdGFibGFfMSkNCg0KYGBgDQoNCg0KIyMjIEluZm9ybWFjacOzbiBkZWwgcGFydGljaXBhbnRlDQoNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHJlc3VsdHM9ICJhc2lzIn0NCg0KDQojIEluZm9ybWFjacOzbiBpbmRpdmlkdWFsDQoNCiMgLSBTZXhvDQojIC0gRWRhZCAtIHByb21lZGlvDQojIC0gRWRhZCAtIGdydXBvcyBkZSBlZGFkDQojIC0gTml2ZWwgZWR1Y2F0aXZvDQojIC0gT2N1cGFjacOzbg0KIyAtIEVzdGFiaWxpZGFkIGxhYm9yYWwNCiMgLSBUaXBvIGRlIHNlZ3Vybw0KIyAtIElkaW9tYSBhcHJlbmRpZG8gZW4gbGEgaW5mYWNpYQ0KIyAtIElkaW9tYSBoYWJsYWRvIGFjdHVhbG1lbnRlDQojIC0gUHJvY2VkZW5jaWEgLyBSZWdpw7NuIGRlIG5hY2ltaWVudG8NCiMgLSBQZXJjZXBjacOzbiBkZSBwZXNvIGNvcnBvcmFsIGFudGVzIGRlIG1pZ3Jhcg0KIyAtIFBlcmNlcGNpw7NuIGRlIHBlc28gY29ycG9yYWwgbHVlZ28gZGUgbWlncmFyDQoNCg0KDQojZ2xpbXBzZShkYXRhX2luZGl2aWR1YWxfaG9nYXIpDQpkYXRhX2luZGl2aWR1YWxfaG9nYXIkZWRhZF9wYXJ0aWNpcGFudGUgPC0gYXMubnVtZXJpYyhkYXRhX2luZGl2aWR1YWxfaG9nYXIkZWRhZF9wYXJ0aWNpcGFudGUpDQoNCiNnbGltcHNlKHNlbGVjdChkYXRhX2luZGl2aWR1YWxfaG9nYXIsIGNvbnRhaW5zKCJzZXgiKSkpDQoNCg0KZGF0YV90YWJsZV8yICA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lICBzZWxlY3QoZWRhZF9wYXJ0aWNpcGFudGUsIHNleG9fcGFydGljaXBhbnRlLmZhY3Rvciwgbml2ZWxfZWR1Y2F0aXZvLmZhY3Rvciwgb2N1cGFjaW9uLmZhY3Rvciwgb2N1cGFjaW9uX2VzdGFiLmZhY3Rvciwgc2VndXJvLmZhY3RvciwgIHBfY19wcmltZXJfaWRpb21hLmZhY3RvciAsIHBfY19jYXNhX2lkaW9tYS5mYWN0b3IgKQ0KI2dsaW1wc2UoZGF0YV90YWJsZV8yKQ0KDQoNCmRhdGFfdGFibGVfMiA8LSBkYXRhX3RhYmxlXzIgJT4lDQogIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMuZmFjdG9yKSwgfiBmY3RfZHJvcChmY3RfaW5mcmVxKC4pKSkpDQoNCg0KDQp0YWJsYV8yIDwtIA0KICBkYXRhX3RhYmxlXzIgJT4lDQogIHRibF9zdW1tYXJ5KA0KICAgIGxhYmVsID0gbGlzdCgNCiAgICAgIGVkYWRfcGFydGljaXBhbnRlIH4gIkVkYWQiLA0KICAgICAgc2V4b19wYXJ0aWNpcGFudGUuZmFjdG9yIH4gIlNleG8iLA0KICAgICAgbml2ZWxfZWR1Y2F0aXZvLmZhY3RvciB+ICJOaXZlbCBFZHVjYXRpdm8iLA0KICAgICAgb2N1cGFjaW9uLmZhY3RvciB+ICJPY3VwYWNpw7NuIiwNCiAgICAgIHNlZ3Vyby5mYWN0b3IgfiAiU2VndXJvIGRlIHNhbHVkIiwNCiAgICAgIHBfY19wcmltZXJfaWRpb21hLmZhY3RvciB+ICJQcmltZXIgaWRpb21hIGFwcmVuZGlkbyIsDQogICAgICBwX2NfY2FzYV9pZGlvbWEuZmFjdG9yIH4gIklkaW9tYSBoYWJsYWRvIGFjdHVhbG1lbnRlIiwNCiAgICAgIG9jdXBhY2lvbl9lc3RhYi5mYWN0b3IgfiAiRXN0YWJpbGlkYWQgbGFib3JhbCINCiAgICApLA0KICAgIHR5cGUgPSBjKGVkYWRfcGFydGljaXBhbnRlKSB+ICJjb250aW51b3VzIiwNCiAgICBzdGF0aXN0aWMgPSBhbGxfY29udGludW91cygpIH4gInttZWFufSAoe3NkfSkiDQogICkgJT4lIA0KICBib2xkX2xhYmVscygpICU+JSANCiAgaXRhbGljaXplX2xldmVscygpDQoNCnRhYmxhXzINCg0KYGBgDQoNCg0KDQojICBEaWZpY3VsdGFkZXMgbHVlZ28gZGUgbGEgbWlncmFjacOzbg0KDQojIyMgQWd1YSBwYXJhIGNvbnN1bW8NCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHJlc3VsdHM9ICJhc2lzIn0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQojI0IpIERpZmljdWx0YWRlcyBsdWVnbyBkZSBsYSBtaWdyYWNpw7NuIC0tLS0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtDQojIEFjY2VzbyBhIGFndWEgcGFyYSBjb25zdW1vDQoNCiMjIERpZmljdWx0YWQgZGVsIGFndWEgYW50ZXMNCmRpZl9hZ3VhX3BhcyA8LSBkYXRhX2hvZ2FyICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGRpZmZfd2F0X2FsdGVyLmZhY3RvcikpICU+JQ0KICBjb3VudChkaWZmX3dhdF9hbHRlci5mYWN0b3IsIG5hbWUgPSAiZnJlY3VlbmNpYSIpICU+JQ0KICBtdXRhdGUocG9yY2VudGFqZSA9IGZyZWN1ZW5jaWEgLyBzdW0oZnJlY3VlbmNpYSkgKiAxMDApICAjIENhbGN1bGFyIGVsIHBvcmNlbnRhamUNCg0KIyBDcmVhciBlbCBncsOhZmljbyBkZSBwaWUgc2luIGxhIGV0aXF1ZXRhICJObyByZWN1ZXJkYSAvIG5vIHNhYmUiDQphZ3VhX3BhcyA8LSBnZ3Bsb3QoZGlmX2FndWFfcGFzLCBhZXMoeCA9ICIiLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IGRpZmZfd2F0X2FsdGVyLmZhY3RvcikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAxLCBzdGF0ID0gImlkZW50aXR5IikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChmcmVjdWVuY2lhLCAiICgiLCByb3VuZChwb3JjZW50YWplLCAxKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSA0KSArDQogIGdndGl0bGUoIsK/RGlmaWN1bHRhZCBsdWVnbyBkZSBsYSBNSUdSQUNJw5NOPyIpDQoNCmFndWFfcGFzDQoNCg0KYGBgDQoNCg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgcmVzdWx0cz0gImFzaXMifQ0KDQojIyBEaWZpY3VsdGFkIGRlbCBhZ3VhIGFjdHVhbGlkYWQNCmRpZl9hZ3VhX2FjdCA8LSBkYXRhX2hvZ2FyICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGRpZmZfd2F0X2FjdHVhbC5mYWN0b3IpKSAlPiUNCiAgY291bnQoZGlmZl93YXRfYWN0dWFsLmZhY3RvciwgbmFtZSA9ICJmcmVjdWVuY2lhIikgJT4lDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvIA0KYWd1YV9hY3QgPC0gZ2dwbG90KGRpZl9hZ3VhX2FjdCwgYWVzKHggPSAiIiwgeSA9IGZyZWN1ZW5jaWEsIGZpbGwgPSBkaWZmX3dhdF9hY3R1YWwuZmFjdG9yKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IDEsIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGNvb3JkX3BvbGFyKCJ5IikgKw0KICBsYWJzKHggPSAiIiwgeSA9ICIiKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSkgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKGZyZWN1ZW5jaWEsICIgKCIsIHJvdW5kKHBvcmNlbnRhamUsIDEpLCAiJSkiKSksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwNCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDQpICsNCiAgZ2d0aXRsZSgiwr9EaWZpY3VsdGFkIEFDVFVBTD8iKQ0KYWd1YV9hY3QNCg0KYGBgDQoNCg0KIyMjIERlc2FndWUgDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQoNCiMjIERpZmljdWx0YWQgZGVsIGRlc2FndWUgYW50ZXMNCmRpZl9kZXNhZ3VlX3BhcyA8LSBkYXRhX2hvZ2FyICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGRpZmZfd2F0X3B1Yl9hbHRlci5mYWN0b3IpKSAlPiUNCiAgY291bnQoZGlmZl93YXRfcHViX2FsdGVyLmZhY3RvciwgbmFtZSA9ICJmcmVjdWVuY2lhIikgJT4lDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvDQpkZXNhZ3VlX3BhcyA8LSBnZ3Bsb3QoZGlmX2Rlc2FndWVfcGFzLCBhZXMoeCA9ICIiLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IGRpZmZfd2F0X3B1Yl9hbHRlci5mYWN0b3IpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnMoeCA9ICIiLCB5ID0gIiIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLA0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaXplID0gNCkgKw0KICBnZ3RpdGxlKCLCv0RpZmljdWx0YWQgbHVlZ28gZGUgbGEgTUlHUkFDScOTTj8iKQ0KDQpkZXNhZ3VlX3Bhcw0KDQpgYGANCg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgcmVzdWx0cz0gImFzaXMifQ0KDQojIyBEaWZpY3VsdGFkIGRlbCBkZXNhZ3VlIGFjdHVhbA0KZGlmX2Rlc2FndWVfYWN0IDwtIGRhdGFfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEoZGlmZl93YXRfcHViX2FjdHVhbC5mYWN0b3IpKSAlPiUNCiAgY291bnQoZGlmZl93YXRfcHViX2FjdHVhbC5mYWN0b3IsIG5hbWUgPSAiZnJlY3VlbmNpYSIpICU+JQ0KICBtdXRhdGUocG9yY2VudGFqZSA9IGZyZWN1ZW5jaWEgLyBzdW0oZnJlY3VlbmNpYSkgKiAxMDApICAjIENhbGN1bGFyIGVsIHBvcmNlbnRhamUNCg0KIyBDcmVhciBlbCBncsOhZmljbw0KZGVzYWd1ZV9hY3QgPC0gZ2dwbG90KGRpZl9kZXNhZ3VlX2FjdCwgYWVzKHggPSAiIiwgeSA9IGZyZWN1ZW5jaWEsIGZpbGwgPSBkaWZmX3dhdF9wdWJfYWN0dWFsLmZhY3RvcikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAxLCBzdGF0ID0gImlkZW50aXR5IikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChmcmVjdWVuY2lhLCAiICgiLCByb3VuZChwb3JjZW50YWplLCAxKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSA0KSArDQogIGdndGl0bGUoIsK/RGlmaWN1bHRhZCBBQ1RVQUw/IikNCg0KZGVzYWd1ZV9hY3QNCg0KYGBgDQoNCiMjIyBEaWFycmVhcyANCg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgcmVzdWx0cz0gImFzaXMifQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtDQojIERpYXJyZWFzDQoNCiMjIERpZmljdWx0YWQgZGUgbGEgZGlhcnJlYSBhbnRlcw0KZGlmX2RpYXJyZWFfcGFzIDwtIGRhdGFfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEoZGlmZl9lbmZlX2Nvbl9oMjAuZmFjdG9yKSkgJT4lDQogIGNvdW50KGRpZmZfZW5mZV9jb25faDIwLmZhY3RvciwgbmFtZSA9ICJmcmVjdWVuY2lhIikgJT4lDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvDQpkaWFycmVhX3BhcyA8LSBnZ3Bsb3QoZGlmX2RpYXJyZWFfcGFzLCBhZXMoeCA9ICIiLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IGRpZmZfZW5mZV9jb25faDIwLmZhY3RvcikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAxLCBzdGF0ID0gImlkZW50aXR5IikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChmcmVjdWVuY2lhLCAiICgiLCByb3VuZChwb3JjZW50YWplLCAxKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSA0KSArDQogIGdndGl0bGUoIsK/RGlmaWN1bHRhZCBsdWVnbyBkZSBsYSBNSUdSQUNJw5NOPyIpDQoNCmRpYXJyZWFfcGFzDQoNCmBgYA0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQoNCiMjIERpZmljdWx0YWQgZGUgbGEgZGlhcnJlYSBhY3R1YWxpZGFkDQpkaWZfZGlhcnJlYV9hY3QgPC0gZGF0YV9ob2dhciAlPiUNCiAgZmlsdGVyKCFpcy5uYShkaWZmX2VuZmVfY29uX2gyMF9hY3QuZmFjdG9yKSkgJT4lDQogIGNvdW50KGRpZmZfZW5mZV9jb25faDIwX2FjdC5mYWN0b3IsIG5hbWUgPSAiZnJlY3VlbmNpYSIpICU+JQ0KICBtdXRhdGUocG9yY2VudGFqZSA9IGZyZWN1ZW5jaWEgLyBzdW0oZnJlY3VlbmNpYSkgKiAxMDApICAjIENhbGN1bGFyIGVsIHBvcmNlbnRhamUNCg0KIyBDcmVhciBlbCBncsOhZmljbyANCmRpYXJyZWFfYWN0IDwtIGdncGxvdChkaWZfZGlhcnJlYV9hY3QsIGFlcyh4ID0gIiIsIHkgPSBmcmVjdWVuY2lhLCBmaWxsID0gZGlmZl9lbmZlX2Nvbl9oMjBfYWN0LmZhY3RvcikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAxLCBzdGF0ID0gImlkZW50aXR5IikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChmcmVjdWVuY2lhLCAiICgiLCByb3VuZChwb3JjZW50YWplLCAxKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSA0KSArDQogIGdndGl0bGUoIsK/RGlmaWN1bHRhZCBBQ1RVQUw/IikNCg0KZGlhcnJlYV9hY3QNCg0KYGBgDQoNCg0KIyAgRGVzcGxhemFtaWVudG8gZm9yemFkbw0KDQojIyMgRGVzcGxhemFtaWVudG8gZm9yemFkbw0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgcmVzdWx0cz0gImFzaXMifQ0KDQojIyBEZXNwbGF6YW1pZW50byBmb3J6YWRvDQpkZXNwX2ZvcnphZG8gPC0gZGF0YV9pbmRpdmlkdWFsX2hvZ2FyICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGRlc3BfYWxnX2ZvcnouZmFjdG9yKSkgJT4lDQogIGNvdW50KGRlc3BfYWxnX2ZvcnouZmFjdG9yLCBuYW1lID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgbXV0YXRlKHBvcmNlbnRhamUgPSBmcmVjdWVuY2lhIC8gc3VtKGZyZWN1ZW5jaWEpICogMTAwKSAgIyBDYWxjdWxhciBlbCBwb3JjZW50YWplDQoNCiMgQ3JlYXIgZWwgZ3LDoWZpY28gDQpkZXNwbF9mb3J6YWRvIDwtIGdncGxvdChkZXNwX2ZvcnphZG8sIGFlcyh4ID0gIiIsIHkgPSBmcmVjdWVuY2lhLCBmaWxsID0gZGVzcF9hbGdfZm9yei5mYWN0b3IpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnMoeCA9ICIiLCB5ID0gIiIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLA0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaXplID0gNCkgKw0KICBnZ3RpdGxlKCJEZXNwbGF6YW1pZW50byBGb3J6YWRvIikNCg0KZGVzcGxfZm9yemFkbw0Kcm0oZGVzcF9mb3J6YWRvLCBkZXNwbF9mb3J6YWRvKQ0KDQpgYGANCg0KIyMjIFJhem9uZXMgZGVsIGRlc3BsYXphbWllbnRvIGZvcnphZG8NCg0KDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQoNCiMgTW90aXZvIGRlbCBkZXNwbGF6YW1pZW50byBmb3J6YWRvDQpyYXpvbmVzX2Rlc3BfZm9yeiA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEoZGVzcF9tb3Rpdl9mb3J6LmZhY3RvcikpICU+JQ0KICBjb3VudChkZXNwX21vdGl2X2ZvcnouZmFjdG9yLCBuYW1lID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgbXV0YXRlKHBvcmNlbnRhamUgPSBmcmVjdWVuY2lhIC8gc3VtKGZyZWN1ZW5jaWEpICogMTAwKSAgIyBDYWxjdWxhciBlbCBwb3JjZW50YWplDQoNCg0KIyBSZW5vbWJyYXIgbGEgc2VndW5kYSBhbHRlcm5hdGl2YSBkZWwgZmFjdG9yDQpyYXpvbmVzX2Rlc3BfZm9yeiRkZXNwX21vdGl2X2ZvcnouZmFjdG9yIDwtIGZjdF9yZWNvZGUoDQogIHJhem9uZXNfZGVzcF9mb3J6JGRlc3BfbW90aXZfZm9yei5mYWN0b3IsDQogICJEZXNhc3RyZXMgTmF0dXJhbGVzIiA9ICJEZXNhc3RyZXMgbmF0dXJhbGVzOiBpbnVuZGFjaW9uZXMsIHNlcXXDrWFzLCB0ZXJyZW1vdG9zLCBlcnVwY2lvbmVzIHZvbGPDoW5pY2FzLCBodWF5Y29zLCBpbmNlbmRpb3MgZm9yZXN0YWxlcywgZXRjLiIpDQoNCiMgDQojIENyZWFyIGVsIGdyw6FmaWNvDQpyYXpfZGVzcF9mcm9yemFkbyA8LSBnZ3Bsb3QocmF6b25lc19kZXNwX2ZvcnosIGFlcyh4ID0gZmN0X3Jlb3JkZXIoZGVzcF9tb3Rpdl9mb3J6LmZhY3RvciwgZnJlY3VlbmNpYSksIHkgPSBmcmVjdWVuY2lhLCBmaWxsID0gZGVzcF9tb3Rpdl9mb3J6LmZhY3RvcikpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHdpZHRoID0gMC43KSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzLjUpICsgDQogIGxhYnModGl0bGUgPSAiRGVzcGxhemFtaWVudG8gRm9yemFkbyAoSG9yaXpvbnRhbCkiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIkZyZWN1ZW5jaWEiKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwgICMgT2N1bHRhIGxhIGxleWVuZGENCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICAjIENlbnRyYSB5IGVzdGlsaXphIGVsIHTDrXR1bG8NCg0KcmF6X2Rlc3BfZnJvcnphZG8NCg0Kcm0ocmF6b25lc19kZXNwX2ZvcnosIHJhel9kZXNwX2Zyb3J6YWRvKQ0KDQpgYGANCg0KIyAgUGVyY2VwY2nDs24gc29icmUgY2FtYmlvcyBlbiBlbCBDTElNQSBhbnRlcyBkZSBsYSBtaWdyYWNpw7NuDQoNCiMjIyBDYW1iaW9zIGVuIGVsIENMSU1BDQoNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHJlc3VsdHM9ICJhc2lzIn0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLQ0KIyBQZXJjZXBjacOzbiBkZSBjYW1iaW9zIGVuIGVsIENMSU1BDQpwZXJjcF9jbGltYSA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEocGVyY2VwX2NsaW1fYW50ZV92aXYuZmFjdG9yKSkgJT4lDQogIGNvdW50KHBlcmNlcF9jbGltX2FudGVfdml2LmZhY3RvciwgbmFtZSA9ICJmcmVjdWVuY2lhIikgJT4lDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvIA0KY2xpbWEgPC0gZ2dwbG90KHBlcmNwX2NsaW1hLCBhZXMoeCA9ICIiLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IHBlcmNlcF9jbGltX2FudGVfdml2LmZhY3RvcikpICsNCiAgZ2VvbV9iYXIod2lkdGggPSAxLCBzdGF0ID0gImlkZW50aXR5IikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChmcmVjdWVuY2lhLCAiICgiLCByb3VuZChwb3JjZW50YWplLCAxKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksDQogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNpemUgPSA0KSArDQogIGdndGl0bGUoIlBlcmNlcGNpw7NuIGRlIGNhbWJpb3MgZW4gZWwgY2xpbWEiKQ0KDQpjbGltYQ0Kcm0ocGVyY3BfY2xpbWEsIGNsaW1hKQ0KDQpgYGANCg0KIyMjIENhbWJpb3MgZW4gZWwgVEVNUEVSQVRVUkENCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHJlc3VsdHM9ICJhc2lzIn0NCnBlcmNwX3RlbXBlcmF0dXJhIDwtIGRhdGFfaW5kaXZpZHVhbF9ob2dhciAlPiUNCiAgZmlsdGVyKCFpcy5uYSh0ZW1wX2NhbWJfYW50ZV92aXZpby5mYWN0b3IpKSAlPiUNCiAgY291bnQodGVtcF9jYW1iX2FudGVfdml2aW8uZmFjdG9yLCBuYW1lID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgbXV0YXRlKHBvcmNlbnRhamUgPSBmcmVjdWVuY2lhIC8gc3VtKGZyZWN1ZW5jaWEpICogMTAwKSAgIyBDYWxjdWxhciBlbCBwb3JjZW50YWplDQoNCiMgQ3JlYXIgZWwgZ3LDoWZpY28gDQp0ZW1wZXJhdHVyYSA8LSBnZ3Bsb3QocGVyY3BfdGVtcGVyYXR1cmEsIGFlcyh4ID0gIiIsIHkgPSBmcmVjdWVuY2lhLCBmaWxsID0gdGVtcF9jYW1iX2FudGVfdml2aW8uZmFjdG9yKSkgKw0KICBnZW9tX2Jhcih3aWR0aCA9IDEsIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGNvb3JkX3BvbGFyKCJ5IikgKw0KICBsYWJzKHggPSAiIiwgeSA9ICIiKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSkgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKGZyZWN1ZW5jaWEsICIgKCIsIHJvdW5kKHBvcmNlbnRhamUsIDEpLCAiJSkiKSksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwNCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDQpICsNCiAgZ2d0aXRsZSgiUGVyY2VwY2nDs24gZGUgY2FtYmlvcyBlbiBsYSBUZW1wZXJhdHVyYSIpDQoNCnRlbXBlcmF0dXJhDQpybShwZXJjcF90ZW1wZXJhdHVyYSwgdGVtcGVyYXR1cmEpDQoNCmBgYA0KDQojIyMgQ2FtYmlvcyBlbiBlbCBMTFVWSUFTDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQojIFBlcmNlcGNpw7NuIGRlIGNhbWJpb3MgZW4gZWwgTExVVklBUw0KcGVyY3BfbGx1dmlhcyA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEodGVtX2FudGVfY2FtYl9sbHV2LmZhY3RvcikpICU+JQ0KICBjb3VudCh0ZW1fYW50ZV9jYW1iX2xsdXYuZmFjdG9yLCBuYW1lID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgbXV0YXRlKHBvcmNlbnRhamUgPSBmcmVjdWVuY2lhIC8gc3VtKGZyZWN1ZW5jaWEpICogMTAwKSAgIyBDYWxjdWxhciBlbCBwb3JjZW50YWplDQoNCiMgQ3JlYXIgZWwgZ3LDoWZpY28gDQpsbHV2aWFzIDwtIGdncGxvdChwZXJjcF9sbHV2aWFzLCBhZXMoeCA9ICIiLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IHRlbV9hbnRlX2NhbWJfbGx1di5mYWN0b3IpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnMoeCA9ICIiLCB5ID0gIiIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLA0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaXplID0gNCkgKw0KICBnZ3RpdGxlKCJQZXJjZXBjacOzbiBkZSBjYW1iaW9zIGVuIGxhcyBMbHV2aWFzIikNCmxsdXZpYXMNCnJtKHBlcmNwX2xsdXZpYXMsIGxsdXZpYXMpDQoNCmBgYA0KDQojIyMgQ2FtYmlvcyBlbiBlbCBFVkVOVE9TIEVYVFJFTU9TDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCByZXN1bHRzPSAiYXNpcyJ9DQojIFBlcmNlcGNpw7NuIGRlIGNhbWJpb3MgZW4gZWwgRVZFTlRPUyBFWFRSRU1PUw0KcGVyY3BfZXZlbnRfZXh0cmVtZSA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIGZpbHRlcighaXMubmEoZXZlbnRfZXh0X2FudGVfcHJvdi5mYWN0b3IpKSAlPiUNCiAgY291bnQoZXZlbnRfZXh0X2FudGVfcHJvdi5mYWN0b3IsIG5hbWUgPSAiZnJlY3VlbmNpYSIpICU+JQ0KICBtdXRhdGUocG9yY2VudGFqZSA9IGZyZWN1ZW5jaWEgLyBzdW0oZnJlY3VlbmNpYSkgKiAxMDApICAjIENhbGN1bGFyIGVsIHBvcmNlbnRhamUNCg0KIyBDcmVhciBlbCBncsOhZmljbyANCmV2ZW50b3NfZXh0cmVtb3MgPC0gZ2dwbG90KHBlcmNwX2V2ZW50X2V4dHJlbWUsIGFlcyh4ID0gIiIsIHkgPSBmcmVjdWVuY2lhLCBmaWxsID0gZXZlbnRfZXh0X2FudGVfcHJvdi5mYWN0b3IpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnMoeCA9ICIiLCB5ID0gIiIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLA0KICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaXplID0gNCkgKw0KICBnZ3RpdGxlKCJQZXJjZXBjacOzbiBkZSBjYW1iaW9zIGVuIEV2ZW50b3MgRXh0cmVtb3MiKQ0KDQpldmVudG9zX2V4dHJlbW9zDQpybShwZXJjcF9ldmVudF9leHRyZW1lLCBldmVudG9zX2V4dHJlbW9zKQ0KDQoNCmBgYA0KDQojICBDYW1iaW8gZGUgUGF0cm9uZXMgRGlldGFyaW9zIGFudGVzIHkgbHVlZ28gZGUgbGEgTWlncmFjacOzbg0KDQojIyMgQW50ZXMgZGUgTWlncmFyDQoNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHJlc3VsdHM9ICJhc2lzIn0NCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtDQojIEFudGVzIGRlIG1pZ3JhciAgZG9uZGUgY29uc3VtaWFzIHN1cyBhbGltZW50b3MNCmNvbnN1bWVfYW50X2FsaW1lbnRvcyA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIHNlbGVjdChzdGFydHNfd2l0aCgiZG9uZGVfY29uc3VfYW50ZXNfX18iKSkNCg0KbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9hbnRlc19fXzEiXSA8LSAiRW4gY2FzYSINCm5hbWVzKGNvbnN1bWVfYW50X2FsaW1lbnRvcylbbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKSA9PSAiZG9uZGVfY29uc3VfYW50ZXNfX18yIl0gPC0gIkVuIHJlc3RhdXJhbnRlIg0KbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9hbnRlc19fXzMiXSA8LSAiRW4gbGEgY2FsbGUiDQpuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpW25hbWVzKGNvbnN1bWVfYW50X2FsaW1lbnRvcykgPT0gImRvbmRlX2NvbnN1X2FudGVzX19fNCJdIDwtICJFbiBlbCB0cmFiYWpvIg0KbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9hbnRlc19fXzUiXSA8LSAiRW4gZWwgY29tZWRvciBwb3B1cGxhciINCm5hbWVzKGNvbnN1bWVfYW50X2FsaW1lbnRvcylbbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKSA9PSAiZG9uZGVfY29uc3VfYW50ZXNfX182NiJdIDwtICJPdHJvIG3DqXRvZG8iDQpuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpW25hbWVzKGNvbnN1bWVfYW50X2FsaW1lbnRvcykgPT0gImRvbmRlX2NvbnN1X2FudGVzX19fOTgiXSA8LSAiTm8gcmVjdWVyZGEgLyBubyBzYWJlIg0KbmFtZXMoY29uc3VtZV9hbnRfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FudF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9hbnRlc19fXzk5Il0gPC0gIk5vIHF1aXNvIHJlc3BvbmRlciINCg0KDQojIENhbGN1bGFyIGxhIGZyZWN1ZW5jaWEgeSBwb3JjZW50YWplIGRlIGNhZGEgb3BjacOzbg0KY29uc3VtZV9hbnRfYWxpbWVudG9zIDwtIGNvbnN1bWVfYW50X2FsaW1lbnRvcyAlPiUNCiAgc3VtbWFyaXNlKGFjcm9zcyhldmVyeXRoaW5nKCksIH4gc3VtKC4gPT0gMSwgbmEucm0gPSBUUlVFKSkpICU+JQ0KICBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSwgbmFtZXNfdG8gPSAib3BjaW9uIiwgdmFsdWVzX3RvID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgZmlsdGVyKGZyZWN1ZW5jaWEgPj0gMSkgJT4lICAjIEZpbHRyYXIgc29sbyBvcGNpb25lcyBjb24gZnJlY3VlbmNpYSA+PSAxDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvDQphbGltZW50b3NfYW50ZXMgPC0gZ2dwbG90KGNvbnN1bWVfYW50X2FsaW1lbnRvcywgYWVzKHggPSBmY3RfcmVvcmRlcihvcGNpb24sIGZyZWN1ZW5jaWEpLCB5ID0gZnJlY3VlbmNpYSwgZmlsbCA9IG9wY2lvbikpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHdpZHRoID0gMC43KSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoZnJlY3VlbmNpYSwgIiAoIiwgcm91bmQocG9yY2VudGFqZSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAzLjUpICsgDQogIGxhYnModGl0bGUgPSAiRG9uZGUgY29uc3VtaWEgc3VzIGFsaW1lbnRvcyBhbnRlcyBkZSBtaWdyYXIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIkZyZWN1ZW5jaWEiKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwgICMgT2N1bHRhIGxhIGxleWVuZGENCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpICAjIENlbnRyYSB5IGVzdGlsaXphIGVsIHTDrXR1bG8NCg0KYWxpbWVudG9zX2FudGVzDQoNCg0KDQpgYGANCg0KIyMjIEx1ZWdvIGRlIGxhIE1pZ3JhY2nDs24NCg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgcmVzdWx0cz0gImFzaXMifQ0KIyBBY3R1YWxtZW50ZSBkb25kZSBjb25zdW1lIHN1cyBhbGltZW50b3MNCmNvbnN1bWVfYWN0X2FsaW1lbnRvcyA8LSBkYXRhX2luZGl2aWR1YWxfaG9nYXIgJT4lDQogIHNlbGVjdChzdGFydHNfd2l0aCgiZG9uZGVfY29uc3VfX18iKSkNCg0KbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9fXzEiXSA8LSAiRW4gY2FzYSINCm5hbWVzKGNvbnN1bWVfYWN0X2FsaW1lbnRvcylbbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKSA9PSAiZG9uZGVfY29uc3VfX18yIl0gPC0gIkVuIHJlc3RhdXJhbnRlIg0KbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9fXzMiXSA8LSAiRW4gbGEgY2FsbGUiDQpuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpW25hbWVzKGNvbnN1bWVfYWN0X2FsaW1lbnRvcykgPT0gImRvbmRlX2NvbnN1X19fNCJdIDwtICJFbiBlbCB0cmFiYWpvIg0KbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9fXzUiXSA8LSAiRW4gZWwgY29tZWRvciBwb3B1cGxhciINCm5hbWVzKGNvbnN1bWVfYWN0X2FsaW1lbnRvcylbbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKSA9PSAiZG9uZGVfY29uc3VfX182NiJdIDwtICJPdHJvIG3DqXRvZG8iDQpuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpW25hbWVzKGNvbnN1bWVfYWN0X2FsaW1lbnRvcykgPT0gImRvbmRlX2NvbnN1X19fOTgiXSA8LSAiTm8gcmVjdWVyZGEgLyBubyBzYWJlIg0KbmFtZXMoY29uc3VtZV9hY3RfYWxpbWVudG9zKVtuYW1lcyhjb25zdW1lX2FjdF9hbGltZW50b3MpID09ICJkb25kZV9jb25zdV9fXzk5Il0gPC0gIk5vIHF1aXNvIHJlc3BvbmRlciINCg0KDQojIENhbGN1bGFyIGxhIGZyZWN1ZW5jaWEgeSBwb3JjZW50YWplIGRlIGNhZGEgb3BjacOzbg0KY29uc3VtZV9hY3RfYWxpbWVudG9zIDwtIGNvbnN1bWVfYWN0X2FsaW1lbnRvcyAlPiUNCiAgc3VtbWFyaXNlKGFjcm9zcyhldmVyeXRoaW5nKCksIH4gc3VtKC4gPT0gMSwgbmEucm0gPSBUUlVFKSkpICU+JQ0KICBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSwgbmFtZXNfdG8gPSAib3BjaW9uIiwgdmFsdWVzX3RvID0gImZyZWN1ZW5jaWEiKSAlPiUNCiAgZmlsdGVyKGZyZWN1ZW5jaWEgPj0gMSkgJT4lICAjIEZpbHRyYXIgc29sbyBvcGNpb25lcyBjb24gZnJlY3VlbmNpYSA+PSAxDQogIG11dGF0ZShwb3JjZW50YWplID0gZnJlY3VlbmNpYSAvIHN1bShmcmVjdWVuY2lhKSAqIDEwMCkgICMgQ2FsY3VsYXIgZWwgcG9yY2VudGFqZQ0KDQojIENyZWFyIGVsIGdyw6FmaWNvDQphbGltZW50b3NfYWN0dWFsIDwtIGdncGxvdChjb25zdW1lX2FjdF9hbGltZW50b3MsIGFlcyh4ID0gZmN0X3Jlb3JkZXIob3BjaW9uLCBmcmVjdWVuY2lhKSwgeSA9IGZyZWN1ZW5jaWEsIGZpbGwgPSBvcGNpb24pKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCB3aWR0aCA9IDAuNykgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKGZyZWN1ZW5jaWEsICIgKCIsIHJvdW5kKHBvcmNlbnRhamUsIDEpLCAiJSkiKSksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMy41KSArIA0KICBsYWJzKHRpdGxlID0gIkRvbmRlIGNvbnN1bWUgc3VzIGFsaW1lbnRvcyBhY3R1YWxtZW50ZSIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiRnJlY3VlbmNpYSIpICsNCiAgY29vcmRfZmxpcCgpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLCAgIyBPY3VsdGEgbGEgbGV5ZW5kYQ0KICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiKSkgICMgQ2VudHJhIHkgZXN0aWxpemEgZWwgdMOtdHVsbw0KDQphbGltZW50b3NfYWN0dWFsDQoNCmBgYA0K