Cobertura por Grupos Optimizados
Cobertura MINSA

Cobertura privada

Cobertura General

Cobertura por Microred
Cobertura MINSA

Cobertura privada

Cobertura General

Cobertura por Cluster

Cobertura privadas

Cobertura General

Cobertura por Distrito

Cobertura privadas

Cobertura General

Ratio Humano Perro

LS0tDQp0aXRsZTogIkNvYmVydHVyYXMgLSBFbmN1c3RhcyBWYW5jYW4iDQphdXRob3I6ICJFcXVpcG8gZGUgRGF0b3MgLSBPbmUgSGVhbHRoIC0gU2VkZSBBUlEiDQpkYXRlOiAiMjAyNS0wMi0wNiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdGhlbWU6IHVuaXRlZA0KLS0tDQoNCg0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFfQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KIzAuIExJQlJFUklBL0lNUE9SVEFDScOTTiBEQVRBIC0tLS0gDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQpybShsaXN0ID0gc2V0ZGlmZihscygpLCBjKCkpKQ0KI2luc3RhbGwucGFja2FnZXMoInRlcnJhIikNCiNpbnN0YWxsLnBhY2thZ2VzKCJzcCIpDQojaW5zdGFsbC5wYWNrYWdlcygibGVhZmxldCIpDQojaW5zdGFsbC5wYWNrYWdlcygib3Blbnhsc3giKQ0KbGlicmFyeShzZikNCmxpYnJhcnkoc3ApDQpsaWJyYXJ5KHJpbykNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHRlcnJhKQ0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkoaGF2ZW4pDQpsaWJyYXJ5KEhtaXNjKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShsZWFmbGV0KQ0KbGlicmFyeSh3cml0ZXhsKQ0KbGlicmFyeShzdHJpbmdyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShvcGVueGxzeCkNCmNhdCgiXDAxNCIpICANCg0KIyBkYXRhX2VuY3Vlc3RhcyA8LSBpbXBvcnQoJ01vZGlmaWVkIGRhdGEvZGF0YV9lbmN1ZXN0YXMuUkRTJykNCiMgTGVlIGxvcyBhcmNoaXZvcyBDU1YNCg0KDQpjb2JlcnR1cmFzIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL2FydHVyXzR5dWNmdG0vQm94L0VOQ1VFU1RBUyBQT1NUIFZBTkNBTiBSQUJJQS9FbmN1ZXN0YXMgUG9zdCBWYW5jYW4gMjAyNC9EYXRhX0VOQ1VFU1RBUy0yMDI0L1Jlc3VsdGFkb3MvbWljcm9yZWRfMl8zXzQueGxzeCIpDQoNCmNsdXN0ZXIgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvYXJ0dXJfNHl1Y2Z0bS9Cb3gvRU5DVUVTVEFTIFBPU1QgVkFOQ0FOIFJBQklBL0VuY3Vlc3RhcyBQb3N0IFZhbmNhbiAyMDI0L0RhdGFfRU5DVUVTVEFTLTIwMjQvUmVzdWx0YWRvcy9jbHVzdGVyXzJfM180Lnhsc3giKQ0KDQpkaXN0cml0byA8LSByZWFkX2V4Y2VsKCJDOi9Vc2Vycy9hcnR1cl80eXVjZnRtL0JveC9FTkNVRVNUQVMgUE9TVCBWQU5DQU4gUkFCSUEvRW5jdWVzdGFzIFBvc3QgVmFuY2FuIDIwMjQvRGF0YV9FTkNVRVNUQVMtMjAyNC9SZXN1bHRhZG9zL2Rpc3RyaXRvXzJfM180Lnhsc3giKQ0KDQpncm91cF9vcHQgPC0gcmVhZF9leGNlbCgiQzovVXNlcnMvYXJ0dXJfNHl1Y2Z0bS9Cb3gvRU5DVUVTVEFTIFBPU1QgVkFOQ0FOIFJBQklBL0VuY3Vlc3RhcyBQb3N0IFZhbmNhbiAyMDI0L0RhdGFfRU5DVUVTVEFTLTIwMjQvUmVzdWx0YWRvcy9ncnVwb19vcHRfMl8zXzQueGxzeCIpDQoNCg0KY29iIDwtIGNvYmVydHVyYXMNCmNsc3RlciA8LSBjbHVzdGVyDQpkc3RyaXRvIDwtIGRpc3RyaXRvDQpncm91cCA8LSBncm91cF9vcHQNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQojIyBDb2JlcnR1cmEgcG9yIGVsIE1JTlNBDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCg0KIyBFeHRyYWVyIGNvYmVydHVyYSwgaW50ZXJ2YWxvIGluZmVyaW9yIHkgc3VwZXJpb3INCmV4dHJhZXJfdmFsb3JlcyA8LSBmdW5jdGlvbih4KSB7DQogIG51bSA8LSBhcy5udW1lcmljKHN0cl9leHRyYWN0KHgsICJeWzAtOV0rXFwuP1swLTldKiIpKSAjIEV4dHJhZSBlbCBwcmltZXIgbsO6bWVybyBjb21vIGNvYmVydHVyYQ0KICBsaSA8LSBhcy5udW1lcmljKHN0cl9leHRyYWN0KHgsICIoPzw9XFwoKVswLTldK1xcLj9bMC05XSoiKSkgIyBFeHRyYWUgZWwgbMOtbWl0ZSBpbmZlcmlvcg0KICBscyA8LSBhcy5udW1lcmljKHN0cl9leHRyYWN0KHgsICJbMC05XStcXC4/WzAtOV0qKD89XFwpKSIpKSAjIEV4dHJhZSBlbCBsw61taXRlIHN1cGVyaW9yDQogIHJldHVybihkYXRhLmZyYW1lKGNvYmVydHVyYSA9IG51bSwgbGkgPSBsaSwgbHMgPSBscykpDQp9DQoNCg0KYGBgDQoNCiMgKipDb2JlcnR1cmEgcG9yIEdydXBvcyBPcHRpbWl6YWRvcyoqDQoNCiMjIENvYmVydHVyYSBNSU5TQQ0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9MTR9DQpncm91cCA8LSBncm91cCAlPiUNCiAgbXV0YXRlKGFjcm9zcyhzdGFydHNfd2l0aCgiY29iX21pbnNhIiksIGFzLmNoYXJhY3RlcikpDQoNCg0KIyBBcGxpY2FyIGxhIGZ1bmNpw7NuIGEgY2FkYSBjb2x1bW5hIGRlIGNvYmVydHVyYQ0KZGF0b3NfbG9uZyA8LSBncm91cCAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX21pbnNhIiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX2xvbmcgPC0gZGF0b3NfbG9uZyAlPiUNCiAgbXV0YXRlKGFuaW8gPSBjYXNlX3doZW4oDQogICAgYW5pbyA9PSAiMjIiIH4gIjIwMjIiLA0KICAgIGFuaW8gPT0gIjIzIiB+ICIyMDIzIiwNCiAgICBhbmlvID09ICIyNCIgfiAiMjAyNCIsDQogICAgVFJVRSB+IGFuaW8gICMgTWFudGllbmUgbG9zIGRlbcOhcyB2YWxvcmVzIHNpbiBjYW1iaW9zDQogICkpDQoNCg0KIyBHcmFmaWNhciBjb24gZ2dwbG90Mg0KbWluc2EgPC0gZ2dwbG90KGRhdG9zX2xvbmcsIGFlcyh4ID0gZ3J1cG9fb3B0LCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDAsIGhqdXN0ID0gMSwgc2l6ZSA9IDE2KSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwgICMgQXVtZW50YXIgdGFtYcOxbyBlamUgWSkNCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsICAgICAgICAgICAgICMgQ29sb2NhciBsYSBsZXllbmRhIGFiYWpvDQogICAgICAgIGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIsICAgICAgICAjIExleWVuZGEgaG9yaXpvbnRhbA0KICAgICAgICBsZWdlbmQuYm94ID0gImhvcml6b250YWwiLCAgICAgICAgICAgICAgIyBBbGluZWFyIGV0aXF1ZXRhcyBob3Jpem9udGFsbWVudGUNCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0w610dWxvIGRlIGxhIGxleWVuZGENCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgICAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdGV4dG8gZGUgbGEgbGV5ZW5kYQ0KbWluc2ENCg0KYGBgDQoNCiMjIENvYmVydHVyYSBwcml2YWRhDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCmdyb3VwIDwtIGdyb3VwICU+JQ0KICBtdXRhdGUoYWNyb3NzKHN0YXJ0c193aXRoKCJjb2JfcHJpdiIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCiMgQXBsaWNhciBsYSBmdW5jacOzbiBhIGNhZGEgY29sdW1uYSBkZSBjb2JlcnR1cmENCmRhdG9zX3ByaXYgPC0gZ3JvdXAgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gc3RhcnRzX3dpdGgoImNvYl9wcml2IiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX3ByaXYgPC0gZGF0b3NfcHJpdiAlPiUNCiAgbXV0YXRlKGFuaW8gPSBjYXNlX3doZW4oDQogICAgYW5pbyA9PSAiMjIiIH4gIjIwMjIiLA0KICAgIGFuaW8gPT0gIjIzIiB+ICIyMDIzIiwNCiAgICBhbmlvID09ICIyNCIgfiAiMjAyNCIsDQogICAgVFJVRSB+IGFuaW8gICMgTWFudGllbmUgbG9zIGRlbcOhcyB2YWxvcmVzIHNpbiBjYW1iaW9zDQogICkpDQoNCg0KIyBHcmFmaWNhciBjb24gZ2dwbG90Mg0KcHJpdmFkbyA8LSBnZ3Bsb3QoZGF0b3NfcHJpdiwgYWVzKHggPSBncnVwb19vcHQsIHkgPSBjb2JlcnR1cmEsIGZpbGwgPSBhbmlvKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuOSkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbGksIHltYXggPSBscyksIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuOSkpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKw0KICBsYWJzKHRpdGxlID0gIiIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiIiwNCiAgICAgICBmaWxsID0gIkHDsW8iKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBzaXplID0gMTYpLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAgIyBBdW1lbnRhciB0YW1hw7FvIGVqZSBZKQ0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQpwcml2YWRvDQoNCg0KYGBgDQoNCg0KIyMgQ29iZXJ0dXJhIEdlbmVyYWwNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLndpZHRoPTE2LCBmaWcuaGVpZ2h0PTE0fQ0KZ3JvdXAgPC0gZ3JvdXAgJT4lDQogIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoImNvYl90b3RhbCIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCiMgQXBsaWNhciBsYSBmdW5jacOzbiBhIGNhZGEgY29sdW1uYSBkZSBjb2JlcnR1cmENCmRhdG9zX3RvdGFsIDwtIGdyb3VwICU+JQ0KICBwaXZvdF9sb25nZXIoY29scyA9IHN0YXJ0c193aXRoKCJjb2JfdG90YWwiKSwgbmFtZXNfdG8gPSAiYW5pbyIsIHZhbHVlc190byA9ICJ2YWxvciIpICU+JQ0KICBtdXRhdGUoYW5pbyA9IHN0cl9leHRyYWN0KGFuaW8sICJbMC05XSsiKSkgJT4lICAjIEV4dHJhZXIgZWwgYcOxbyBkZSBsYSB2YXJpYWJsZQ0KICByb3d3aXNlKCkgJT4lDQogIG11dGF0ZShleHRyYWlkbyA9IGxpc3QoZXh0cmFlcl92YWxvcmVzKHZhbG9yKSkpICU+JQ0KICB1bm5lc3QoY29scyA9IGMoZXh0cmFpZG8pKSAlPiUNCiAgc2VsZWN0KC12YWxvcikgICMgRWxpbWluYXIgbGEgY29sdW1uYSBvcmlnaW5hbCBjb24gdGV4dG8NCg0KZGF0b3NfdG90YWwgPC0gZGF0b3NfdG90YWwgJT4lDQogIG11dGF0ZShhbmlvID0gY2FzZV93aGVuKA0KICAgIGFuaW8gPT0gIjIyIiB+ICIyMDIyIiwNCiAgICBhbmlvID09ICIyMyIgfiAiMjAyMyIsDQogICAgYW5pbyA9PSAiMjQiIH4gIjIwMjQiLA0KICAgIFRSVUUgfiBhbmlvICAjIE1hbnRpZW5lIGxvcyBkZW3DoXMgdmFsb3JlcyBzaW4gY2FtYmlvcw0KICApKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpnZW5lcmFsIDwtIGdncGxvdChkYXRvc190b3RhbCwgYWVzKHggPSBncnVwb19vcHQsIHkgPSBjb2JlcnR1cmEsIGZpbGwgPSBhbmlvKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuOSkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbGksIHltYXggPSBscyksIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuOSkpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKw0KICBsYWJzKHRpdGxlID0gIiIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiIiwNCiAgICAgICBmaWxsID0gIkHDsW8iKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBzaXplID0gMTYpLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAgIyBBdW1lbnRhciB0YW1hw7FvIGVqZSBZKQ0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQoNCmdlbmVyYWwNCg0KYGBgDQoNCg0KDQojICoqQ29iZXJ0dXJhIHBvciBNaWNyb3JlZCoqDQoNCiMjIENvYmVydHVyYSBNSU5TQQ0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9MTR9DQoNCg0KIyBDYWxjdWxhciBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmNvYiA8LSBjb2IgJT4lDQogIG11dGF0ZShkaWZfcG9yY2VudHVhbCA9IGNvYl9taW5zYV8yNCAtIGNvYl9taW5zYV8yMykNCg0KY29iIDwtIGNvYiAlPiUNCiAgbXV0YXRlKGFjcm9zcyhzdGFydHNfd2l0aCgiY29iX21pbnNhIiksIGFzLmNoYXJhY3RlcikpDQoNCg0KIyBBcGxpY2FyIGxhIGZ1bmNpw7NuIGEgY2FkYSBjb2x1bW5hIGRlIGNvYmVydHVyYQ0KZGF0b3NfbG9uZyA8LSBjb2IgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gc3RhcnRzX3dpdGgoImNvYl9taW5zYSIpLCBuYW1lc190byA9ICJhbmlvIiwgdmFsdWVzX3RvID0gInZhbG9yIikgJT4lDQogIG11dGF0ZShhbmlvID0gc3RyX2V4dHJhY3QoYW5pbywgIlswLTldKyIpKSAlPiUgICMgRXh0cmFlciBlbCBhw7FvIGRlIGxhIHZhcmlhYmxlDQogIHJvd3dpc2UoKSAlPiUNCiAgbXV0YXRlKGV4dHJhaWRvID0gbGlzdChleHRyYWVyX3ZhbG9yZXModmFsb3IpKSkgJT4lDQogIHVubmVzdChjb2xzID0gYyhleHRyYWlkbykpICU+JQ0KICBzZWxlY3QoLXZhbG9yKSAgIyBFbGltaW5hciBsYSBjb2x1bW5hIG9yaWdpbmFsIGNvbiB0ZXh0bw0KDQpkYXRvc19sb25nIDwtIGRhdG9zX2xvbmcgJT4lDQogIG11dGF0ZShhbmlvID0gY2FzZV93aGVuKA0KICAgIGFuaW8gPT0gIjIyIiB+ICIyMDIyIiwNCiAgICBhbmlvID09ICIyMyIgfiAiMjAyMyIsDQogICAgYW5pbyA9PSAiMjQiIH4gIjIwMjQiLA0KICAgIFRSVUUgfiBhbmlvICAjIE1hbnRpZW5lIGxvcyBkZW3DoXMgdmFsb3JlcyBzaW4gY2FtYmlvcw0KICApKQ0KDQoNCiMgT3JkZW5hciBsb3MgZGF0b3MgZGUgbWF5b3IgYSBtZW5vciBzZWfDum4gbGEgZGlmZXJlbmNpYSBwb3JjZW50dWFsDQpkYXRvc19sb25nIDwtIGRhdG9zX2xvbmcgJT4lDQogIGFycmFuZ2UoZGVzYyhkaWZfcG9yY2VudHVhbCkpDQoNCiMgQ29udmVydGlyIG1pY3JvcmVkIGVuIGZhY3RvciBwYXJhIGZpamFyIGVsIG9yZGVuIGVuIGVsIGdyw6FmaWNvDQpkYXRvc19sb25nJG1pY3JvcmVkIDwtIGZhY3RvcihkYXRvc19sb25nJG1pY3JvcmVkLCBsZXZlbHMgPSB1bmlxdWUoZGF0b3NfbG9uZyRtaWNyb3JlZCkpDQoNCiMgR3JhZmljYXIgY29uIGdncGxvdDINCm1pbnNhIDwtIGdncGxvdChkYXRvc19sb25nLCBhZXMoeCA9IG1pY3JvcmVkLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQptaW5zYQ0KDQpgYGANCg0KDQoNCiMjIENvYmVydHVyYSBwcml2YWRhDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCg0KIyBFeHRyYWVyIGxhIHByaW1lcmEgcGFydGUgdXNhbmRvIHJlZ2V4DQpjb2IgPC0gY29iICU+JQ0KICBtdXRhdGUoDQogICAgY29iX3ByaXZfMjMgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KGNvYl9wcml2XzIzX2ljLCAiXlswLTldK1xcLj9bMC05XSoiKSksDQogICAgY29iX3ByaXZfMjQgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KGNvYl9wcml2XzI0X2ljLCAiXlswLTldK1xcLj9bMC05XSoiKSkpDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KY29iIDwtIGNvYiAlPiUNCiAgbXV0YXRlKGRpZl9wb3JjZW50dWFsID0gY29iX3ByaXZfMjQgLSBjb2JfcHJpdl8yMykNCg0KY29iIDwtIGNvYiAlPiUNCiAgbXV0YXRlKGFjcm9zcyhzdGFydHNfd2l0aCgiY29iX3ByaXYiKSwgYXMuY2hhcmFjdGVyKSkNCg0KDQojIEFwbGljYXIgbGEgZnVuY2nDs24gYSBjYWRhIGNvbHVtbmEgZGUgY29iZXJ0dXJhDQpkYXRvc19wcml2IDwtIGNvYiAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX3ByaXYiKSwgbmFtZXNfdG8gPSAiYW5pbyIsIHZhbHVlc190byA9ICJ2YWxvciIpICU+JQ0KICBtdXRhdGUoYW5pbyA9IHN0cl9leHRyYWN0KGFuaW8sICJbMC05XSsiKSkgJT4lICAjIEV4dHJhZXIgZWwgYcOxbyBkZSBsYSB2YXJpYWJsZQ0KICByb3d3aXNlKCkgJT4lDQogIG11dGF0ZShleHRyYWlkbyA9IGxpc3QoZXh0cmFlcl92YWxvcmVzKHZhbG9yKSkpICU+JQ0KICB1bm5lc3QoY29scyA9IGMoZXh0cmFpZG8pKSAlPiUNCiAgc2VsZWN0KC12YWxvcikgICMgRWxpbWluYXIgbGEgY29sdW1uYSBvcmlnaW5hbCBjb24gdGV4dG8NCg0KZGF0b3NfcHJpdiA8LSBkYXRvc19wcml2ICU+JQ0KICBtdXRhdGUoYW5pbyA9IGNhc2Vfd2hlbigNCiAgICBhbmlvID09ICIyMiIgfiAiMjAyMiIsDQogICAgYW5pbyA9PSAiMjMiIH4gIjIwMjMiLA0KICAgIGFuaW8gPT0gIjI0IiB+ICIyMDI0IiwNCiAgICBUUlVFIH4gYW5pbyAgIyBNYW50aWVuZSBsb3MgZGVtw6FzIHZhbG9yZXMgc2luIGNhbWJpb3MNCiAgKSkNCg0KDQojIE9yZGVuYXIgbG9zIGRhdG9zIGRlIG1heW9yIGEgbWVub3Igc2Vnw7puIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZGF0b3NfcHJpdiA8LSBkYXRvc19wcml2ICU+JQ0KICBhcnJhbmdlKGRlc2MoZGlmX3BvcmNlbnR1YWwpKQ0KDQojIENvbnZlcnRpciBtaWNyb3JlZCBlbiBmYWN0b3IgcGFyYSBmaWphciBlbCBvcmRlbiBlbiBlbCBncsOhZmljbw0KZGF0b3NfcHJpdiRtaWNyb3JlZCA8LSBmYWN0b3IoZGF0b3NfcHJpdiRtaWNyb3JlZCwgbGV2ZWxzID0gdW5pcXVlKGRhdG9zX3ByaXYkbWljcm9yZWQpKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpwcml2YWRvIDwtIGdncGxvdChkYXRvc19wcml2LCBhZXMoeCA9IG1pY3JvcmVkLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQpwcml2YWRvDQoNCg0KYGBgDQoNCg0KIyMgQ29iZXJ0dXJhIEdlbmVyYWwNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLndpZHRoPTE2LCBmaWcuaGVpZ2h0PTE0fQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQojIyBDb2JlcnR1cmEgVG90YWwNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KY3QgPC0gY29iICU+JQ0KICBtdXRhdGUoZGlmX3BvcmNlbnR1YWwgPSBjb2JfdG90YWxfMjQgLSBjb2JfdG90YWxfMjMpDQoNCmNvYiA8LSBjb2IgJT4lDQogIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoImNvYl90b3RhbCIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCiMgQXBsaWNhciBsYSBmdW5jacOzbiBhIGNhZGEgY29sdW1uYSBkZSBjb2JlcnR1cmENCmRhdG9zX3RvdGFsIDwtIGNvYiAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX3RvdGFsIiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX3RvdGFsIDwtIGRhdG9zX3RvdGFsICU+JQ0KICBtdXRhdGUoYW5pbyA9IGNhc2Vfd2hlbigNCiAgICBhbmlvID09ICIyMiIgfiAiMjAyMiIsDQogICAgYW5pbyA9PSAiMjMiIH4gIjIwMjMiLA0KICAgIGFuaW8gPT0gIjI0IiB+ICIyMDI0IiwNCiAgICBUUlVFIH4gYW5pbyAgIyBNYW50aWVuZSBsb3MgZGVtw6FzIHZhbG9yZXMgc2luIGNhbWJpb3MNCiAgKSkNCg0KDQojIE9yZGVuYXIgbG9zIGRhdG9zIGRlIG1heW9yIGEgbWVub3Igc2Vnw7puIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZGF0b3NfdG90YWwgPC0gZGF0b3NfdG90YWwgJT4lDQogIGFycmFuZ2UoZGVzYyhkaWZfcG9yY2VudHVhbCkpDQoNCiMgQ29udmVydGlyIG1pY3JvcmVkIGVuIGZhY3RvciBwYXJhIGZpamFyIGVsIG9yZGVuIGVuIGVsIGdyw6FmaWNvDQpkYXRvc190b3RhbCRtaWNyb3JlZCA8LSBmYWN0b3IoZGF0b3NfdG90YWwkbWljcm9yZWQsIGxldmVscyA9IHVuaXF1ZShkYXRvc190b3RhbCRtaWNyb3JlZCkpDQoNCiMgR3JhZmljYXIgY29uIGdncGxvdDINCmdlbmVyYWwgPC0gZ2dwbG90KGRhdG9zX3RvdGFsLCBhZXMoeCA9IG1pY3JvcmVkLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQpnZW5lcmFsDQoNCmBgYA0KDQoNCg0KDQojICoqQ29iZXJ0dXJhIHBvciBDbHVzdGVyKioNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLndpZHRoPTE2LCBmaWcuaGVpZ2h0PTE0fQ0KDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KY2xzdGVyIDwtIGNsc3RlciAlPiUNCiAgbXV0YXRlKGRpZl9wb3JjZW50dWFsID0gY29iX21pbnNhXzI0IC0gY29iX21pbnNhXzIzKQ0KDQpjbHN0ZXIgPC0gY2xzdGVyICU+JQ0KICBtdXRhdGUoYWNyb3NzKHN0YXJ0c193aXRoKCJjb2JfbWluc2EiKSwgYXMuY2hhcmFjdGVyKSkNCg0KDQojIEFwbGljYXIgbGEgZnVuY2nDs24gYSBjYWRhIGNvbHVtbmEgZGUgY29iZXJ0dXJhDQpkYXRvc19sb25nIDwtIGNsc3RlciAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX21pbnNhIiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX2xvbmcgPC0gZGF0b3NfbG9uZyAlPiUNCiAgbXV0YXRlKGFuaW8gPSBjYXNlX3doZW4oDQogICAgYW5pbyA9PSAiMjIiIH4gIjIwMjIiLA0KICAgIGFuaW8gPT0gIjIzIiB+ICIyMDIzIiwNCiAgICBhbmlvID09ICIyNCIgfiAiMjAyNCIsDQogICAgVFJVRSB+IGFuaW8gICMgTWFudGllbmUgbG9zIGRlbcOhcyB2YWxvcmVzIHNpbiBjYW1iaW9zDQogICkpDQoNCiMgT3JkZW5hciBsb3MgZGF0b3MgZGUgbWF5b3IgYSBtZW5vciBzZWfDum4gbGEgZGlmZXJlbmNpYSBwb3JjZW50dWFsDQpkYXRvc19sb25nIDwtIGRhdG9zX2xvbmcgJT4lDQogIGFycmFuZ2UoZGVzYyhkaWZfcG9yY2VudHVhbCkpDQoNCiMgQ29udmVydGlyIG1pY3JvcmVkIGVuIGZhY3RvciBwYXJhIGZpamFyIGVsIG9yZGVuIGVuIGVsIGdyw6FmaWNvDQpkYXRvc19sb25nJGNsdXN0ZXIgPC0gZmFjdG9yKGRhdG9zX2xvbmckY2x1c3RlciwgbGV2ZWxzID0gdW5pcXVlKGRhdG9zX2xvbmckY2x1c3RlcikpDQoNCg0KIyBHcmFmaWNhciBjb24gZ2dwbG90Mg0KbWluc2EgPC0gZ2dwbG90KGRhdG9zX2xvbmcsIGFlcyh4ID0gY2x1c3RlciwgeSA9IGNvYmVydHVyYSwgZmlsbCA9IGFuaW8pKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJkb2RnZSIsIHdpZHRoID0gMC45KSArDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBsaSwgeW1heCA9IGxzKSwgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoMC45KSkgKw0KICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArDQogIGxhYnModGl0bGUgPSAiIiwNCiAgICAgICB4ID0gIiIsDQogICAgICAgeSA9ICIiLA0KICAgICAgIGZpbGwgPSAiQcOxbyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAwLCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQptaW5zYQ0KDQpgYGANCg0KIyMgQ29iZXJ0dXJhIHByaXZhZGFzDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KIyMgQ29iZXJ0dXJhIHBvciBQcml2YWRvDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCg0KIyBFeHRyYWVyIGxhIHByaW1lcmEgcGFydGUgdXNhbmRvIHJlZ2V4DQpjbHN0ZXIgPC0gY2xzdGVyICU+JQ0KICBtdXRhdGUoDQogICAgY29iX3ByaXZfMjMgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KGNvYl9wcml2XzIzX2ljLCAiXlswLTldK1xcLj9bMC05XSoiKSksDQogICAgY29iX3ByaXZfMjQgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KGNvYl9wcml2XzI0X2ljLCAiXlswLTldK1xcLj9bMC05XSoiKSkpDQoNCiMgQ2FsY3VsYXIgbGEgZGlmZXJlbmNpYSBwb3JjZW50dWFsDQpjbHN0ZXIgPC0gY2xzdGVyICU+JQ0KICBtdXRhdGUoZGlmX3BvcmNlbnR1YWwgPSBjb2JfcHJpdl8yNCAtIGNvYl9wcml2XzIzKQ0KDQpjbHN0ZXIgPC0gY2xzdGVyICU+JQ0KICBtdXRhdGUoYWNyb3NzKHN0YXJ0c193aXRoKCJjb2JfcHJpdiIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCiMgQXBsaWNhciBsYSBmdW5jacOzbiBhIGNhZGEgY29sdW1uYSBkZSBjb2JlcnR1cmENCmRhdG9zX3ByaXYgPC0gY2xzdGVyICU+JQ0KICBwaXZvdF9sb25nZXIoY29scyA9IHN0YXJ0c193aXRoKCJjb2JfcHJpdiIpLCBuYW1lc190byA9ICJhbmlvIiwgdmFsdWVzX3RvID0gInZhbG9yIikgJT4lDQogIG11dGF0ZShhbmlvID0gc3RyX2V4dHJhY3QoYW5pbywgIlswLTldKyIpKSAlPiUgICMgRXh0cmFlciBlbCBhw7FvIGRlIGxhIHZhcmlhYmxlDQogIHJvd3dpc2UoKSAlPiUNCiAgbXV0YXRlKGV4dHJhaWRvID0gbGlzdChleHRyYWVyX3ZhbG9yZXModmFsb3IpKSkgJT4lDQogIHVubmVzdChjb2xzID0gYyhleHRyYWlkbykpICU+JQ0KICBzZWxlY3QoLXZhbG9yKSAgIyBFbGltaW5hciBsYSBjb2x1bW5hIG9yaWdpbmFsIGNvbiB0ZXh0bw0KDQpkYXRvc19wcml2IDwtIGRhdG9zX3ByaXYgJT4lDQogIG11dGF0ZShhbmlvID0gY2FzZV93aGVuKA0KICAgIGFuaW8gPT0gIjIyIiB+ICIyMDIyIiwNCiAgICBhbmlvID09ICIyMyIgfiAiMjAyMyIsDQogICAgYW5pbyA9PSAiMjQiIH4gIjIwMjQiLA0KICAgIFRSVUUgfiBhbmlvICAjIE1hbnRpZW5lIGxvcyBkZW3DoXMgdmFsb3JlcyBzaW4gY2FtYmlvcw0KICApKQ0KDQojIE9yZGVuYXIgbG9zIGRhdG9zIGRlIG1heW9yIGEgbWVub3Igc2Vnw7puIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZGF0b3NfcHJpdiA8LSBkYXRvc19wcml2ICU+JQ0KICBhcnJhbmdlKGRlc2MoZGlmX3BvcmNlbnR1YWwpKQ0KDQojIENvbnZlcnRpciBtaWNyb3JlZCBlbiBmYWN0b3IgcGFyYSBmaWphciBlbCBvcmRlbiBlbiBlbCBncsOhZmljbw0KZGF0b3NfcHJpdiRjbHVzdGVyIDwtIGZhY3RvcihkYXRvc19wcml2JGNsdXN0ZXIsIGxldmVscyA9IHVuaXF1ZShkYXRvc19wcml2JGNsdXN0ZXIpKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpwcml2YWRvIDwtIGdncGxvdChkYXRvc19wcml2LCBhZXMoeCA9IGNsdXN0ZXIsIHkgPSBjb2JlcnR1cmEsIGZpbGwgPSBhbmlvKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuOSkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbGksIHltYXggPSBscyksIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuOSkpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKw0KICBsYWJzKHRpdGxlID0gIiIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiIiwNCiAgICAgICBmaWxsID0gIkHDsW8iKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMCwgaGp1c3QgPSAxLCBzaXplID0gMTYpLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAgIyBBdW1lbnRhciB0YW1hw7FvIGVqZSBZKQ0KICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsICAgICAgICAgICAgICMgQ29sb2NhciBsYSBsZXllbmRhIGFiYWpvDQogICAgICAgIGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIsICAgICAgICAjIExleWVuZGEgaG9yaXpvbnRhbA0KICAgICAgICBsZWdlbmQuYm94ID0gImhvcml6b250YWwiLCAgICAgICAgICAgICAgIyBBbGluZWFyIGV0aXF1ZXRhcyBob3Jpem9udGFsbWVudGUNCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0w610dWxvIGRlIGxhIGxleWVuZGENCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgICAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdGV4dG8gZGUgbGEgbGV5ZW5kYQ0KcHJpdmFkbw0KDQoNCmBgYA0KDQoNCiMjIENvYmVydHVyYSBHZW5lcmFsDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KIyMgQ29iZXJ0dXJhIFRvdGFsDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0NCg0KIyBDYWxjdWxhciBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmNsc3RlciA8LSBjbHN0ZXIgJT4lDQogIG11dGF0ZShkaWZfcG9yY2VudHVhbCA9IGNvYl90b3RhbF8yNCAtIGNvYl90b3RhbF8yMykNCg0KDQpjbHN0ZXIgPC0gY2xzdGVyICU+JQ0KICBtdXRhdGUoYWNyb3NzKHN0YXJ0c193aXRoKCJjb2JfdG90YWwiKSwgYXMuY2hhcmFjdGVyKSkNCg0KDQojIEFwbGljYXIgbGEgZnVuY2nDs24gYSBjYWRhIGNvbHVtbmEgZGUgY29iZXJ0dXJhDQpkYXRvc190b3RhbCA8LSBjbHN0ZXIgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gc3RhcnRzX3dpdGgoImNvYl90b3RhbCIpLCBuYW1lc190byA9ICJhbmlvIiwgdmFsdWVzX3RvID0gInZhbG9yIikgJT4lDQogIG11dGF0ZShhbmlvID0gc3RyX2V4dHJhY3QoYW5pbywgIlswLTldKyIpKSAlPiUgICMgRXh0cmFlciBlbCBhw7FvIGRlIGxhIHZhcmlhYmxlDQogIHJvd3dpc2UoKSAlPiUNCiAgbXV0YXRlKGV4dHJhaWRvID0gbGlzdChleHRyYWVyX3ZhbG9yZXModmFsb3IpKSkgJT4lDQogIHVubmVzdChjb2xzID0gYyhleHRyYWlkbykpICU+JQ0KICBzZWxlY3QoLXZhbG9yKSAgIyBFbGltaW5hciBsYSBjb2x1bW5hIG9yaWdpbmFsIGNvbiB0ZXh0bw0KDQpkYXRvc190b3RhbCA8LSBkYXRvc190b3RhbCAlPiUNCiAgbXV0YXRlKGFuaW8gPSBjYXNlX3doZW4oDQogICAgYW5pbyA9PSAiMjIiIH4gIjIwMjIiLA0KICAgIGFuaW8gPT0gIjIzIiB+ICIyMDIzIiwNCiAgICBhbmlvID09ICIyNCIgfiAiMjAyNCIsDQogICAgVFJVRSB+IGFuaW8gICMgTWFudGllbmUgbG9zIGRlbcOhcyB2YWxvcmVzIHNpbiBjYW1iaW9zDQogICkpDQoNCg0KIyBPcmRlbmFyIGxvcyBkYXRvcyBkZSBtYXlvciBhIG1lbm9yIHNlZ8O6biBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmRhdG9zX3RvdGFsIDwtIGRhdG9zX3RvdGFsICU+JQ0KICBhcnJhbmdlKGRlc2MoZGlmX3BvcmNlbnR1YWwpKQ0KDQojIENvbnZlcnRpciBtaWNyb3JlZCBlbiBmYWN0b3IgcGFyYSBmaWphciBlbCBvcmRlbiBlbiBlbCBncsOhZmljbw0KZGF0b3NfdG90YWwkY2x1c3RlciA8LSBmYWN0b3IoZGF0b3NfdG90YWwkY2x1c3RlciwgbGV2ZWxzID0gdW5pcXVlKGRhdG9zX3RvdGFsJGNsdXN0ZXIpKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpnZW5lcmFsIDwtIGdncGxvdChkYXRvc190b3RhbCwgYWVzKHggPSBjbHVzdGVyLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDAsIGhqdXN0ID0gMSwgc2l6ZSA9IDE2KSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwgICMgQXVtZW50YXIgdGFtYcOxbyBlamUgWSkNCiAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iLCAgICAgICAgICAgICAjIENvbG9jYXIgbGEgbGV5ZW5kYSBhYmFqbw0KICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLCAgICAgICAgIyBMZXllbmRhIGhvcml6b250YWwNCiAgICAgICAgbGVnZW5kLmJveCA9ICJob3Jpem9udGFsIiwgICAgICAgICAgICAgICMgQWxpbmVhciBldGlxdWV0YXMgaG9yaXpvbnRhbG1lbnRlDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdMOtdHVsbyBkZSBsYSBsZXllbmRhDQogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpICAgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHRleHRvIGRlIGxhIGxleWVuZGENCmdlbmVyYWwNCg0KYGBgDQoNCg0KDQojICoqQ29iZXJ0dXJhIHBvciBEaXN0cml0byoqDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCg0KIyBDYWxjdWxhciBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmRzdHJpdG8gPC0gZHN0cml0byAlPiUNCiAgbXV0YXRlKGRpZl9wb3JjZW50dWFsID0gY29iX21pbnNhXzI0IC0gY29iX21pbnNhXzIzKQ0KDQpkc3RyaXRvIDwtIGRzdHJpdG8gJT4lDQogIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoImNvYl9taW5zYSIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCiMgQXBsaWNhciBsYSBmdW5jacOzbiBhIGNhZGEgY29sdW1uYSBkZSBjb2JlcnR1cmENCmRhdG9zX2xvbmcgPC0gZHN0cml0byAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX21pbnNhIiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX2xvbmcgPC0gZGF0b3NfbG9uZyAlPiUNCiAgbXV0YXRlKGFuaW8gPSBjYXNlX3doZW4oDQogICAgYW5pbyA9PSAiMjIiIH4gIjIwMjIiLA0KICAgIGFuaW8gPT0gIjIzIiB+ICIyMDIzIiwNCiAgICBhbmlvID09ICIyNCIgfiAiMjAyNCIsDQogICAgVFJVRSB+IGFuaW8gICMgTWFudGllbmUgbG9zIGRlbcOhcyB2YWxvcmVzIHNpbiBjYW1iaW9zDQogICkpDQoNCg0KIyBPcmRlbmFyIGxvcyBkYXRvcyBkZSBtYXlvciBhIG1lbm9yIHNlZ8O6biBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmRhdG9zX2xvbmcgPC0gZGF0b3NfbG9uZyAlPiUNCiAgYXJyYW5nZShkZXNjKGRpZl9wb3JjZW50dWFsKSkNCg0KIyBDb252ZXJ0aXIgbWljcm9yZWQgZW4gZmFjdG9yIHBhcmEgZmlqYXIgZWwgb3JkZW4gZW4gZWwgZ3LDoWZpY28NCmRhdG9zX2xvbmckZGlzdHJpdG8gPC0gZmFjdG9yKGRhdG9zX2xvbmckZGlzdHJpdG8sIGxldmVscyA9IHVuaXF1ZShkYXRvc19sb25nJGRpc3RyaXRvKSkNCg0KIyBHcmFmaWNhciBjb24gZ2dwbG90Mg0KbWluc2EgPC0gZ2dwbG90KGRhdG9zX2xvbmcsIGFlcyh4ID0gZGlzdHJpdG8sIHkgPSBjb2JlcnR1cmEsIGZpbGwgPSBhbmlvKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuOSkgKw0KICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbGksIHltYXggPSBscyksIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuOSkpICsNCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKw0KICBsYWJzKHRpdGxlID0gIiIsDQogICAgICAgeCA9ICIiLA0KICAgICAgIHkgPSAiIiwNCiAgICAgICBmaWxsID0gIkHDsW8iKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgc2l6ZSA9IDE2KSwNCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwgICMgQXVtZW50YXIgdGFtYcOxbyBlamUgWSkNCiAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iLCAgICAgICAgICAgICAjIENvbG9jYXIgbGEgbGV5ZW5kYSBhYmFqbw0KICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLCAgICAgICAgIyBMZXllbmRhIGhvcml6b250YWwNCiAgICAgICAgbGVnZW5kLmJveCA9ICJob3Jpem9udGFsIiwgICAgICAgICAgICAgICMgQWxpbmVhciBldGlxdWV0YXMgaG9yaXpvbnRhbG1lbnRlDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdMOtdHVsbyBkZSBsYSBsZXllbmRhDQogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpICAgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHRleHRvIGRlIGxhIGxleWVuZGENCm1pbnNhDQoNCmBgYA0KDQojIyBDb2JlcnR1cmEgcHJpdmFkYXMNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLndpZHRoPTE2LCBmaWcuaGVpZ2h0PTE0fQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQojIyBDb2JlcnR1cmEgcG9yIFByaXZhZG8NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQojIEV4dHJhZXIgbGEgcHJpbWVyYSBwYXJ0ZSB1c2FuZG8gcmVnZXgNCmRzdHJpdG8gPC0gZHN0cml0byAlPiUNCiAgbXV0YXRlKA0KICAgIGNvYl9wcml2XzIzID0gYXMubnVtZXJpYyhzdHJfZXh0cmFjdChjb2JfcHJpdl8yM19pYywgIl5bMC05XStcXC4/WzAtOV0qIikpLA0KICAgIGNvYl9wcml2XzI0ID0gYXMubnVtZXJpYyhzdHJfZXh0cmFjdChjb2JfcHJpdl8yNF9pYywgIl5bMC05XStcXC4/WzAtOV0qIikpKQ0KDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZHN0cml0byA8LSBkc3RyaXRvICU+JQ0KICBtdXRhdGUoZGlmX3BvcmNlbnR1YWwgPSBjb2JfcHJpdl8yNCAtIGNvYl9wcml2XzIzKQ0KDQpkc3RyaXRvIDwtIGRzdHJpdG8gJT4lDQogIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoImNvYl9wcml2IiksIGFzLmNoYXJhY3RlcikpDQoNCg0KIyBBcGxpY2FyIGxhIGZ1bmNpw7NuIGEgY2FkYSBjb2x1bW5hIGRlIGNvYmVydHVyYQ0KZGF0b3NfcHJpdiA8LSBkc3RyaXRvICU+JQ0KICBwaXZvdF9sb25nZXIoY29scyA9IHN0YXJ0c193aXRoKCJjb2JfcHJpdiIpLCBuYW1lc190byA9ICJhbmlvIiwgdmFsdWVzX3RvID0gInZhbG9yIikgJT4lDQogIG11dGF0ZShhbmlvID0gc3RyX2V4dHJhY3QoYW5pbywgIlswLTldKyIpKSAlPiUgICMgRXh0cmFlciBlbCBhw7FvIGRlIGxhIHZhcmlhYmxlDQogIHJvd3dpc2UoKSAlPiUNCiAgbXV0YXRlKGV4dHJhaWRvID0gbGlzdChleHRyYWVyX3ZhbG9yZXModmFsb3IpKSkgJT4lDQogIHVubmVzdChjb2xzID0gYyhleHRyYWlkbykpICU+JQ0KICBzZWxlY3QoLXZhbG9yKSAgIyBFbGltaW5hciBsYSBjb2x1bW5hIG9yaWdpbmFsIGNvbiB0ZXh0bw0KDQpkYXRvc19wcml2IDwtIGRhdG9zX3ByaXYgJT4lDQogIG11dGF0ZShhbmlvID0gY2FzZV93aGVuKA0KICAgIGFuaW8gPT0gIjIyIiB+ICIyMDIyIiwNCiAgICBhbmlvID09ICIyMyIgfiAiMjAyMyIsDQogICAgYW5pbyA9PSAiMjQiIH4gIjIwMjQiLA0KICAgIFRSVUUgfiBhbmlvICAjIE1hbnRpZW5lIGxvcyBkZW3DoXMgdmFsb3JlcyBzaW4gY2FtYmlvcw0KICApKQ0KDQojIE9yZGVuYXIgbG9zIGRhdG9zIGRlIG1heW9yIGEgbWVub3Igc2Vnw7puIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZGF0b3NfcHJpdiA8LSBkYXRvc19wcml2ICU+JQ0KICBhcnJhbmdlKGRlc2MoZGlmX3BvcmNlbnR1YWwpKQ0KDQojIENvbnZlcnRpciBtaWNyb3JlZCBlbiBmYWN0b3IgcGFyYSBmaWphciBlbCBvcmRlbiBlbiBlbCBncsOhZmljbw0KZGF0b3NfcHJpdiRkaXN0cml0byA8LSBmYWN0b3IoZGF0b3NfcHJpdiRkaXN0cml0bywgbGV2ZWxzID0gdW5pcXVlKGRhdG9zX3ByaXYkZGlzdHJpdG8pKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpwcml2YWRvIDwtIGdncGxvdChkYXRvc19wcml2LCBhZXMoeCA9IGRpc3RyaXRvLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgICAgICAgICAgICAgIyBDb2xvY2FyIGxhIGxleWVuZGEgYWJham8NCiAgICAgICAgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgICAgICAgICMgTGV5ZW5kYSBob3Jpem9udGFsDQogICAgICAgIGxlZ2VuZC5ib3ggPSAiaG9yaXpvbnRhbCIsICAgICAgICAgICAgICAjIEFsaW5lYXIgZXRpcXVldGFzIGhvcml6b250YWxtZW50ZQ0KICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHTDrXR1bG8gZGUgbGEgbGV5ZW5kYQ0KICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSAgICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0ZXh0byBkZSBsYSBsZXllbmRhDQpwcml2YWRvDQoNCg0KYGBgDQoNCg0KIyMgQ29iZXJ0dXJhIEdlbmVyYWwNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLndpZHRoPTE2LCBmaWcuaGVpZ2h0PTE0fQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tDQojIyBDb2JlcnR1cmEgVG90YWwNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLQ0KDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KZHN0cml0byA8LSBkc3RyaXRvICU+JQ0KICBtdXRhdGUoZGlmX3BvcmNlbnR1YWwgPSBjb2JfdG90YWxfMjQgLSBjb2JfdG90YWxfMjMpDQoNCmRzdHJpdG8gPC0gZHN0cml0byAlPiUNCiAgbXV0YXRlKGFjcm9zcyhzdGFydHNfd2l0aCgiY29iX3RvdGFsIiksIGFzLmNoYXJhY3RlcikpDQoNCg0KIyBBcGxpY2FyIGxhIGZ1bmNpw7NuIGEgY2FkYSBjb2x1bW5hIGRlIGNvYmVydHVyYQ0KZGF0b3NfdG90YWwgPC0gZHN0cml0byAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiY29iX3RvdGFsIiksIG5hbWVzX3RvID0gImFuaW8iLCB2YWx1ZXNfdG8gPSAidmFsb3IiKSAlPiUNCiAgbXV0YXRlKGFuaW8gPSBzdHJfZXh0cmFjdChhbmlvLCAiWzAtOV0rIikpICU+JSAgIyBFeHRyYWVyIGVsIGHDsW8gZGUgbGEgdmFyaWFibGUNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoZXh0cmFpZG8gPSBsaXN0KGV4dHJhZXJfdmFsb3Jlcyh2YWxvcikpKSAlPiUNCiAgdW5uZXN0KGNvbHMgPSBjKGV4dHJhaWRvKSkgJT4lDQogIHNlbGVjdCgtdmFsb3IpICAjIEVsaW1pbmFyIGxhIGNvbHVtbmEgb3JpZ2luYWwgY29uIHRleHRvDQoNCmRhdG9zX3RvdGFsIDwtIGRhdG9zX3RvdGFsICU+JQ0KICBtdXRhdGUoYW5pbyA9IGNhc2Vfd2hlbigNCiAgICBhbmlvID09ICIyMiIgfiAiMjAyMiIsDQogICAgYW5pbyA9PSAiMjMiIH4gIjIwMjMiLA0KICAgIGFuaW8gPT0gIjI0IiB+ICIyMDI0IiwNCiAgICBUUlVFIH4gYW5pbyAgIyBNYW50aWVuZSBsb3MgZGVtw6FzIHZhbG9yZXMgc2luIGNhbWJpb3MNCiAgKSkNCg0KIyBPcmRlbmFyIGxvcyBkYXRvcyBkZSBtYXlvciBhIG1lbm9yIHNlZ8O6biBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmRhdG9zX3RvdGFsIDwtIGRhdG9zX3RvdGFsICU+JQ0KICBhcnJhbmdlKGRlc2MoZGlmX3BvcmNlbnR1YWwpKQ0KDQojIENvbnZlcnRpciBtaWNyb3JlZCBlbiBmYWN0b3IgcGFyYSBmaWphciBlbCBvcmRlbiBlbiBlbCBncsOhZmljbw0KZGF0b3NfdG90YWwkZGlzdHJpdG8gPC0gZmFjdG9yKGRhdG9zX3RvdGFsJGRpc3RyaXRvLCBsZXZlbHMgPSB1bmlxdWUoZGF0b3NfdG90YWwkZGlzdHJpdG8pKQ0KDQojIEdyYWZpY2FyIGNvbiBnZ3Bsb3QyDQpnZW5lcmFsIDwtIGdncGxvdChkYXRvc190b3RhbCwgYWVzKHggPSBkaXN0cml0bywgeSA9IGNvYmVydHVyYSwgZmlsbCA9IGFuaW8pKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJkb2RnZSIsIHdpZHRoID0gMC45KSArDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBsaSwgeW1heCA9IGxzKSwgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoMC45KSkgKw0KICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArDQogIGxhYnModGl0bGUgPSAiIiwNCiAgICAgICB4ID0gIiIsDQogICAgICAgeSA9ICIiLA0KICAgICAgIGZpbGwgPSAiQcOxbyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCBzaXplID0gMTYpLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAgIyBBdW1lbnRhciB0YW1hw7FvIGVqZSBZKQ0KICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIsICAgICAgICAgICAgICMgQ29sb2NhciBsYSBsZXllbmRhIGFiYWpvDQogICAgICAgIGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIsICAgICAgICAjIExleWVuZGEgaG9yaXpvbnRhbA0KICAgICAgICBsZWdlbmQuYm94ID0gImhvcml6b250YWwiLCAgICAgICAgICAgICAgIyBBbGluZWFyIGV0aXF1ZXRhcyBob3Jpem9udGFsbWVudGUNCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICMgQWp1c3RhciB0YW1hw7FvIGRlbCB0w610dWxvIGRlIGxhIGxleWVuZGENCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgICAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdGV4dG8gZGUgbGEgbGV5ZW5kYQ0KZ2VuZXJhbA0KDQpgYGANCg0KIyAqKlJhdGlvIEh1bWFubyBQZXJybyoqDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNH0NCiMjIyMjIyMjIyMjIyMjIy0NCiMjIyMgUmF0aW8gIyMjIw0KIyMjIyMjIyMjIyMjIyMjLQ0KDQpsaWJyYXJ5KHJlYWRyKQ0KcmF0aW9fMjIgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL2FydHVyXzR5dWNmdG0vQm94L0VOQ1VFU1RBUyBQT1NUIFZBTkNBTiBSQUJJQS9FbmN1ZXN0YXMgUG9zdCBWYW5jYW4gMjAyNC9EYXRhX0VOQ1VFU1RBUy0yMDI0L1Jlc3VsdGFkb3MvMjAyMi9jb2JlcnR1cmFfbWljcm9yZWRfMjAyMi5jc3YiKQ0KcmF0aW9fMjMgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL2FydHVyXzR5dWNmdG0vQm94L0VOQ1VFU1RBUyBQT1NUIFZBTkNBTiBSQUJJQS9FbmN1ZXN0YXMgUG9zdCBWYW5jYW4gMjAyNC9EYXRhX0VOQ1VFU1RBUy0yMDI0L1Jlc3VsdGFkb3MvMjAyMy9jb2JlcnR1cmFfbWljcm9yZWRfMjAyMy5jc3YiKQ0KcmF0aW9fMjQgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL2FydHVyXzR5dWNmdG0vQm94L0VOQ1VFU1RBUyBQT1NUIFZBTkNBTiBSQUJJQS9FbmN1ZXN0YXMgUG9zdCBWYW5jYW4gMjAyNC9EYXRhX0VOQ1VFU1RBUy0yMDI0L1Jlc3VsdGFkb3MvMjAyNC9jb2JlcnR1cmFfbWljcm9yZWRfMjAyNC5jc3YiKQ0KDQojIENhbWJpYXIgZWwgbm9tYnJlIGRlIGxhIGNvbHVtbmEgIm9sZF9uYW1lIiBhICJuZXdfbmFtZSINCm5hbWVzKHJhdGlvXzIyKVtuYW1lcyhyYXRpb18yMikgPT0gInJhdGlvX2hfcCJdIDwtICJyYXRpb19oX3BfMjIiDQpuYW1lcyhyYXRpb18yMylbbmFtZXMocmF0aW9fMjMpID09ICJyYXRpb19oX3AiXSA8LSAicmF0aW9faF9wXzIzIg0KbmFtZXMocmF0aW9fMjQpW25hbWVzKHJhdGlvXzI0KSA9PSAicmF0aW9faF9wIl0gPC0gInJhdGlvX2hfcF8yNCINCg0KDQpkYXRvcyA8LSByYXRpb18yMiAlPiUNCiAgbGVmdF9qb2luKHJhdGlvXzIzLCBieSA9ICJtaWNyb3JlZCIpICU+JQ0KICBsZWZ0X2pvaW4ocmF0aW9fMjQsIGJ5ID0gIm1pY3JvcmVkIikgJT4lDQogIHNlbGVjdChtaWNyb3JlZCwgcmF0aW9faF9wXzIyLCByYXRpb19oX3BfMjMsIHJhdGlvX2hfcF8yNCkNCg0KIyBFeHRyYWVyIGxhIHByaW1lcmEgcGFydGUgdXNhbmRvIHJlZ2V4DQpkYXRvcyA8LSBkYXRvcyAlPiUNCiAgbXV0YXRlKA0KICAgIHJhdGlvX2h1X3BfMjMgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KHJhdGlvX2hfcF8yMywgIl5bMC05XStcXC4/WzAtOV0qIikpLA0KICAgIHJhdGlvX2h1X3BfMjQgPSBhcy5udW1lcmljKHN0cl9leHRyYWN0KHJhdGlvX2hfcF8yNCwgIl5bMC05XStcXC4/WzAtOV0qIikpKQ0KDQojIEV4dHJhZXIgY29iZXJ0dXJhLCBpbnRlcnZhbG8gaW5mZXJpb3IgeSBzdXBlcmlvcg0KZXh0cmFlcl92YWxvcmVzIDwtIGZ1bmN0aW9uKHgpIHsNCiAgbnVtIDwtIGFzLm51bWVyaWMoc3RyX2V4dHJhY3QoeCwgIl5bMC05XStcXC4/WzAtOV0qIikpICMgRXh0cmFlIGVsIHByaW1lciBuw7ptZXJvIGNvbW8gY29iZXJ0dXJhDQogIGxpIDwtIGFzLm51bWVyaWMoc3RyX2V4dHJhY3QoeCwgIig/PD1cXCgpWzAtOV0rXFwuP1swLTldKiIpKSAjIEV4dHJhZSBlbCBsw61taXRlIGluZmVyaW9yDQogIGxzIDwtIGFzLm51bWVyaWMoc3RyX2V4dHJhY3QoeCwgIlswLTldK1xcLj9bMC05XSooPz1cXCkpIikpICMgRXh0cmFlIGVsIGzDrW1pdGUgc3VwZXJpb3INCiAgcmV0dXJuKGRhdGEuZnJhbWUoY29iZXJ0dXJhID0gbnVtLCBsaSA9IGxpLCBscyA9IGxzKSkNCn0NCg0KDQojIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgcG9yY2VudHVhbA0KDQpkYXRvcyA8LSBkYXRvcyAlPiUNCiAgbXV0YXRlKA0KICAgIHJhdGlvX2h1X3BfMjQgPSBhcy5udW1lcmljKHJhdGlvX2h1X3BfMjQpLA0KICAgIHJhdGlvX2h1X3BfMjMgPSBhcy5udW1lcmljKHJhdGlvX2h1X3BfMjMpLA0KICAgIGRpZl9wb3JjZW50dWFsID0gcmF0aW9faHVfcF8yNCAtIHJhdGlvX2h1X3BfMjMpDQoNCg0KZGF0b3MgPC0gZGF0b3MgJT4lDQogIG11dGF0ZShhY3Jvc3Moc3RhcnRzX3dpdGgoInJhdGlvX2hfcCIpLCBhcy5jaGFyYWN0ZXIpKQ0KDQoNCmRhdG9zX2xvbmcgPC0gZGF0b3MgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gc3RhcnRzX3dpdGgoInJhdGlvX2hfcCIpLCBuYW1lc190byA9ICJhbmlvIiwgdmFsdWVzX3RvID0gInZhbG9yIikgJT4lDQogIG11dGF0ZShhbmlvID0gc3RyX2V4dHJhY3QoYW5pbywgIlswLTldKyIpKSAlPiUgICMgRXh0cmFlciBlbCBhw7FvIGRlIGxhIHZhcmlhYmxlDQogIG11dGF0ZShleHRyYWlkbyA9IHN0cl9leHRyYWN0X2FsbCh2YWxvciwgIlswLTldK1xcLj9bMC05XSoiKSkgJT4lICAjIEV4dHJhZXIgbsO6bWVyb3MNCiAgcm93d2lzZSgpICU+JQ0KICBtdXRhdGUoDQogICAgY29iZXJ0dXJhID0gYXMubnVtZXJpYyhleHRyYWlkb1sxXSksDQogICAgbGkgPSBhcy5udW1lcmljKGV4dHJhaWRvWzJdKSwNCiAgICBscyA9IGFzLm51bWVyaWMoZXh0cmFpZG9bM10pDQogICkgJT4lDQogIHVuZ3JvdXAoKSAlPiUNCiAgc2VsZWN0KC12YWxvciwgLWV4dHJhaWRvKSAgIyBFbGltaW5hciBjb2x1bW5hcyB0ZW1wb3JhbGVzDQoNCg0KZGF0b3NfbG9uZyA8LSBkYXRvc19sb25nICU+JQ0KICBtdXRhdGUoYW5pbyA9IGNhc2Vfd2hlbigNCiAgICBhbmlvID09ICIyMiIgfiAiMjAyMiIsDQogICAgYW5pbyA9PSAiMjMiIH4gIjIwMjMiLA0KICAgIGFuaW8gPT0gIjI0IiB+ICIyMDI0IiwNCiAgICBUUlVFIH4gYW5pbyAgIyBNYW50aWVuZSBsb3MgZGVtw6FzIHZhbG9yZXMgc2luIGNhbWJpb3MNCiAgKSkNCg0KIyBPcmRlbmFyIGxvcyBkYXRvcyBkZSBtYXlvciBhIG1lbm9yIHNlZ8O6biBsYSBkaWZlcmVuY2lhIHBvcmNlbnR1YWwNCmRhdG9zX2xvbmcgPC0gZGF0b3NfbG9uZyAlPiUNCiAgYXJyYW5nZShkZXNjKGRpZl9wb3JjZW50dWFsKSkNCg0KIyBDb252ZXJ0aXIgbWljcm9yZWQgZW4gZmFjdG9yIHBhcmEgZmlqYXIgZWwgb3JkZW4gZW4gZWwgZ3LDoWZpY28NCmRhdG9zX2xvbmckbWljcm9yZWQgPC0gZmFjdG9yKGRhdG9zX2xvbmckbWljcm9yZWQsIGxldmVscyA9IHVuaXF1ZShkYXRvc19sb25nJG1pY3JvcmVkKSkNCg0KIyBHcmFmaWNhciBjb24gZ2dwbG90Mg0KcmF0aW9faF9wIDwtIGdncGxvdChkYXRvc19sb25nLCBhZXMoeCA9IG1pY3JvcmVkLCB5ID0gY29iZXJ0dXJhLCBmaWxsID0gYW5pbykpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgd2lkdGggPSAwLjkpICsNCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxpLCB5bWF4ID0gbHMpLCB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsNCiAgbGFicyh0aXRsZSA9ICIiLA0KICAgICAgIHggPSAiIiwNCiAgICAgICB5ID0gIiIsDQogICAgICAgZmlsbCA9ICJBw7FvIikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHNpemUgPSAxNiksDQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksICAjIEF1bWVudGFyIHRhbWHDsW8gZWplIFkpDQogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iLCAgICAgICAgICAgICAjIENvbG9jYXIgbGEgbGV5ZW5kYSBhYmFqbw0KICAgICAgICBsZWdlbmQuZGlyZWN0aW9uID0gImhvcml6b250YWwiLCAgICAgICAgIyBMZXllbmRhIGhvcml6b250YWwNCiAgICAgICAgbGVnZW5kLmJveCA9ICJob3Jpem9udGFsIiwgICAgICAgICAgICAgICMgQWxpbmVhciBldGlxdWV0YXMgaG9yaXpvbnRhbG1lbnRlDQogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAjIEFqdXN0YXIgdGFtYcOxbyBkZWwgdMOtdHVsbyBkZSBsYSBsZXllbmRhDQogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSkpICAgIyBBanVzdGFyIHRhbWHDsW8gZGVsIHRleHRvIGRlIGxhIGxleWVuZGENCnJhdGlvX2hfcA0KDQoNCmBgYA0KDQo=